【问题标题】:Find out png color type using png++使用 png++ 找出 png 颜色类型
【发布时间】:2011-06-12 14:40:53
【问题描述】:

我用的是png++,没问题,但是需要将像素类型设置为模板参数:

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

问题是我在编译时不知道它是 rgb、rgba 等。似乎无法找到让 png++ 告诉我 png 中实际包含哪些信息的方法。

有什么想法吗?

谢谢。

【问题讨论】:

  • 如果在模板参数中尝试错误的像素类型会怎样?您是否遇到异常,或者构造的图像对象是否有空/无效数据?
  • 如果您尝试错误的像素类型,它会转换它。并且 png::image 中的 png::info 给出了用作模板参数的任何颜色类型。

标签: c++ png libpng


【解决方案1】:

您好,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&lt; rgba_pixel &gt; image("input.png"):这会自动为您将 any 颜色类型的 PNG 图像转换为 RGBA。

【讨论】:

  • 实际上我只是将图像直接交给 OpenGL,所以当我可以给它一个灰色的图像时,给它一个 RGBA 图像似乎很可惜。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 2011-01-04
    • 2014-06-09
    • 2019-07-19
    • 2012-09-03
    • 2023-03-18
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多