【问题标题】:PNG++ Read Pixel Color ValuesPNG++ 读取像素颜色值
【发布时间】:2011-05-22 10:50:15
【问题描述】:

如何使用png++ 读取 png 中的像素颜色值?我在documentation 中看不到任何读取值的方式。我需要单独获取所有值 rgba 并将它们附加到 char 数组中。

【问题讨论】:

    标签: c++ png libpng


    【解决方案1】:

    无法添加评论,所以这里:)

    实际上,您应该需要image[Y][X],因为第一个[] 将您带到Y-th 行,然后是该行中的X-th 列。

    顺便说一句,我是 PNG++ 的作者。如果您愿意,请随时在邮件列表或我的私人电子邮件或此处询问更具体的问题。 :)

    【讨论】:

    • 谢谢 ;) 我应该在哪里将其更改为 [X][Y]?对我来说似乎更合乎逻辑。另外你什么时候会实施这个?引用 end_info.hpp ""// TODO: 添加方法以读取/写入文本 cmets 等""
    • @Neb:这就是operator[] 在 C++ 中的工作方式:您只能向它传递一个参数。在 PNG++ 中,图像被认为是行向量,所以 image[N] 得到第 N 行。如果您想以更直观的方式访问像素,请使用get/set_pixel(x,y)。检查它的索引范围确实会受到惩罚。关于对文本 cmets 的支持:当我有足够的空闲时间和动力或有人发送一个非常好的补丁时。 :)
    • @alex,你能解释一下像素的内部存储器布局吗?例如,如果行(扫描线?)被分配在一起并打包,我也许可以使用指针将 PNG 作为纹理加载到我的 OpenGL 上下文中,而不是先将其逐个像素地复制到内存中。顺便说一句,你的图书馆很整洁而且很有帮助。我敢打赌,如果我进行更多挖掘,我可能会自己回答这个问题,但我想先问一下。谢谢!
    • 好吧,使用默认像素缓冲区,布局是不连续的,但是添加这样的缓冲区并专门使用图像类模板应该很容易。
    【解决方案2】:

    我从未使用过 png++,但通过阅读documentation on pixel,我认为您可以使用image[Y][X] 访问png::image<T> image 的像素(X,Y),然后通过访问@ 访问红色、绿色和蓝色值987654324@等

    【讨论】:

    • 我试试看。我是 C++ 的初学者,所以我不太了解:S
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2010-10-10
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多