FreeImage:获取像素颜色

FreeImage: Get pixel color

本文关键字:颜色 像素 获取 FreeImage      更新时间:2023-10-16

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

使用FreeImagePlus使用24或32位图像,获得坐标50,50处的像素将看起来像这样:

fipImage input;
RGBQUAD pixel;
input.load("myimage.png");
height = in.getHeight();
in.getPixelColor(50, height-1-50, &pixel);

请注意,在FreeImage中,原点位于左下方,所以y值可能需要通过从图像高度中减去y来反转。

要从输入图像: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;

希望有帮助!