2011-10-04 159 views
0

我正在写一个小应用程序,它读取图像中每个像素的颜色并将其写入文件。首先我是用Python做的,但是在大图片上它太慢了。然后我发现了可以使用的FreeImage库,但我无法理解如何使用GetPixelColor方法。 您能否提供一个关于如何获得颜色的例子,例如像素[50:50]? 这里是关于GetPixelColor的信息:http://freeimage.sourceforge.net/fnet/html/13E6BB72.htm。 非常感谢!FreeImage:获取像素颜色

+0

如果可以使用DevIL或CImg来完成,那也不错。 – ghostmansd

回答

4

随着使用FreeImagePlus一个24位或32位的图像,得到了像素在COORDS 50,50应该是这样的:

fipImage input; 
RGBQUAD pixel; 

input.load("myimage.png"); 
height = in.getHeight(); 

in.getPixelColor(50, height-1-50, &pixel); 

请注意,在FreeImage的原产地是左下角,所以y值大概会需要通过如上所述从图像高度减去y来反转。

0

要从输入图像获取像素颜色:img,从函数调用让我们说:void read_image(const char* img)请按照下面的代码片段。

这里是上面read_image函数的代码片断:

FREE_IMAGE_FORMAT fif = FreeImage_GetFIFFromFilename(img); 
FIBITMAP *bmp = FreeImage_Load(fif, img); 

unsigned width = FreeImage_GetWidth(bmp); 
unsigned height = FreeImage_GetHeight(bmp); 
int bpp = FreeImage_GetBPP(bmp); 

FIBITMAP* bitmap = FreeImage_Allocate(width, height, bpp); 
RGBQUAD color; FreeImage_GetPixelColor(bitmap, x, y, &color); 

可变color将包含图像像素的颜色。可以按如下方式提取的RGB值:

float r,g,b; 
r = color.rgbRed; 
g = color.rgbGreen; 
b = color.rgbBlue; 

希望它能帮助!