首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libpng,c代码,如何将RGB值转换为像素值?

libpng,c代码,如何将RGB值转换为像素值?
EN

Stack Overflow用户
提问于 2014-03-05 00:00:04
回答 1查看 1.5K关注 0票数 1

我使用libpng的C,我是新的图像处理。

我使用png_get_IHDR()来获取宽度、高度、color_type和bit_depth,图像的值如下:

代码语言:javascript
复制
color_type = 6 (PNG_COLOR_TYPE_RGB_ALPHA)
bit_depth = 8
width = 1850
height = 2048

I use png_get_channels() to get the channels which is 4
I use png_get_rowbytes() to get the bytes per row which is 7400 (1850*4)
I use png_read_image() to get all the image data

我的目标是将RGB值转换为像素值,仅此而已!我知道每个像素的R、G、B和Alpha值是有序地存储在图像数据缓冲区中的,似乎不同bit_depth的转换方法不同。另外,我是否可以忽略Alpha值,在进行转换时只使用R、G、B值?有人能帮忙吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-05 14:36:39

如果您不想担心由于color_type和bit_depth而引起的差异,并且总是想忽略alpha通道,请使用

代码语言:javascript
复制
png_set_expand(png_ptr);
png_set_strip_16(png_ptr);
if (color_type & PNG_COLOR_MASK_ALPHA)
   png_set_strip_alpha(png_ptr);

你的行总是包含8位R,G,B,R,G,B.示例,每像素一组三个字节,每行“宽度”组。

如果您正在使用libpng-1.5.6或更高版本进行构建,则可以使用"png_set_scale_16(png_ptr)“代替;它可以更准确地将16位示例缩小到8位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22185800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档