Пример #1
0
/*****************************************************************************\
 image:SetPalette
\*****************************************************************************/
static int imluaImageSetPalette (lua_State *L)
{
  imImage *image = imlua_checkimage(L, 1);
  imluaPalette *pal = imlua_checkpalette(L, 2);
  long* palette = (long*)malloc(sizeof(long)*256);
  memcpy(palette, pal->color, pal->count*sizeof(long));
  imImageSetPalette(image, palette, pal->count);
  return 0;
}
Пример #2
0
void imProcessSplitHSI(const imImage* src_image, imImage* dst_image1, imImage* dst_image2, imImage* dst_image3)
{
  switch(src_image->data_type)
  {
  case IM_BYTE:
    DoSplitHSIByte((imbyte**)src_image->data, (float*)dst_image1->data[0], (float*)dst_image2->data[0], (float*)dst_image3->data[0], src_image->count);
    break;                                                                                                                                    
  case IM_FLOAT:                                                                                                                               
    DoSplitHSIFloat((float**)src_image->data, (float*)dst_image1->data[0], (float*)dst_image2->data[0], (float*)dst_image3->data[0], src_image->count);
    break;                                                                                
  }

  imImageSetPalette(dst_image1, imPaletteHues(), 256);
}
Пример #3
0
void imProcessQuantizeRGBUniform(const imImage* src_image, imImage* dst_image, int dither)
{
  imbyte *dst_map=(imbyte*)dst_image->data[0], 
         *red_map=(imbyte*)src_image->data[0],
         *green_map=(imbyte*)src_image->data[1],
         *blue_map=(imbyte*)src_image->data[2];

  imImageSetPalette(dst_image, imPaletteUniform(), 256);

  for (int y = 0; y < src_image->height; y++)
  {
    for (int x = 0; x < src_image->width; x++)
    {
      if (dither)
        *dst_map++ = (imbyte)imPaletteUniformIndexHalftoned(imColorEncode(*red_map++, *green_map++, *blue_map++), x, y);
      else
        *dst_map++ = (imbyte)imPaletteUniformIndex(imColorEncode(*red_map++, *green_map++, *blue_map++));
    }
  }
}