使用png ++找出png颜色类型

时间:2011-01-20 16:52:05

标签: c++ png libpng

我正在使用png ++,它工作正常,但您需要将像素类型设置为模板参数:

 png::image< png::rgb_pixel > image("input.png");

问题是我在编译时不知道它是rgb,rgba等。似乎无法找到一种方法让png ++告诉我实际上在png中有什么信息。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

嘿,png++的作者在这里提供帮助:)

如果你真的需要知道PNG图像中的像素格式,使用png::reader是受支持的方式:

png::reader< std::istream > reader(my_stream);
reader.read_info();
png::color_type color_type = reader.get_color_type();

但是,如果您不关心图像颜色类型并且只想加载它,例如RGBA缓冲区,我建议使用png::image< rgba_pixel > image("input.png"):这会自动将任何颜色类型的PNG图像转换为RGBA。

答案 1 :(得分:2)

尝试使用reader。然后查看它的基类io_base的成员函数。我认为它有你想要的东西。