FreeImage:获取像素颜色

发布于 2024-12-08 08:07:07 字数 325 浏览 2 评论 0原文

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

I'm writing a little application that reads color of each pixel in image and writes it to file. First I did it in Python, buit it's too slow on big images. Then I discovered FreeImage library, which I could use, but I can't understand how to use GetPixelColor method.
Could you please provide an example on how to get color, for example, of pixel[50:50]?
Here is information about GetPixelColor: http://freeimage.sourceforge.net/fnet/html/13E6BB72.htm.
Thank you very much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少年亿悲伤 2024-12-15 08:07:07

对于使用 24 或 32 位图像的 FreeImagePlus,获取坐标 50、50 处的像素将如下所示:

fipImage input;
RGBQUAD pixel;

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

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

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

With FreeImagePlus using a 24 or 32 bit image, getting the pixel at coords 50, 50 would look like this:

fipImage input;
RGBQUAD pixel;

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

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

Be aware that in FreeImage the origin is bottom left, so y values will probably need to be inverted by subtracting y from the image height as above.

浪菊怪哟 2024-12-15 08:07:07

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

希望有帮助!

To get pixel color from an input image: img, from a function call let's say: void read_image(const char* img) follow the below code snippet.

Here is the code snippet for above read_image function:

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);

variable color will contain the color of the image pixel. You can extract rgb values as follows:

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

Hope it helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文