c++ - 使用 libpng 提取像素值

标签 c++ image png pixel libpng

我有一个正方形 (1024x1024) 8 位灰度图像,我试图将其用作“景观”(它是一个激流高度模型),我想要做的只是得到类似

byte = pngimg.at(x, y)

我一直在搜索 libpng 的页面并进行谷歌搜索,但没有任何结果。在 Java 中,它就像缓冲图像一样简单。 png 的 C++ 等价物在哪里?

最佳答案

C++不支持STL中的图像类型,所以你必须依赖一些外部库来读取像素。我曾经使用 OpenCV 库来完成它,它的功能是 imread .最近我用 C++11 创建了一个非常简单的库,用于加载 PNG 图像,它只依赖于 libPNG(和 STL)。从 PNG 加载像素数据的代码位于 github repo。 .它从 vector 中获取二进制数据并创建包含像素 vector 的缓冲区。

请注意 - 如果您正在使用 libPNG,您必须记住使用 png_destroy_read_struct 释放 libPNG 资源。 .当我忘记它时,我遇到了一些内存泄漏问题。

关于c++ - 使用 libpng 提取像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723861/

相关文章:

c++ - 如何在 C++ 中散列

c++ - 可移植地将数据打包到缓冲区中

java - 从 rgb-integer 到字节数组的相互转换不起作用

image - 使用docker-compose创建容器会删除另一个已经运行的容器

c++ - 有没有办法在每个启动的新进程上从 Windows 获取事件?

ruby - 将一张图像合成到另一张图像上时,RMagick 透明度不起作用

c++ - CImg 没有正确显示透明的 png 图像?

css - 颜色之上的透明图像

perl - 如何在 perl 中检索 png 文件的高度和宽度属性

c++ - 不确定在哪里定义和声明我的结构。 (获取未声明的标识符)