如何使用 libpng 将 C 代码中的 png 图像解码为原始字节?
我正在寻找一种解码某些 png 文件的方法,我听说过 libpng,但我不明白它是如何工作的。它将 png 文件转换为 ARGB8888 格式的字节数组还是其他格式?
I'm looking for a way to decode some png file, I heard about libpng, but I don't understand how this one works. Does it convert the png file into an array of bytes in the ARGB8888 format or something else ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可运行示例
此示例读取现有 PNG,对其进行修改,然后将修改后的版本写入磁盘。
修改部分是在原始字节上完成的。
用法:
old-png
默认为a.png
new-png
默认为b.png
在 Ubuntu 18.04 上测试,libpng 1.6.34,编译为:
改编自:https://gist.github.com/niw/ 5963798
main.c
a.png
b.png
图片来源:https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Catherine_of_Aragon.png/430px -Catherine_of_Aragon.png
Runnable example
This example reads and existing PNG, modifies it, and writes a modified version to disk.
The modification part is done on raw bytes.
Usage:
old-png
defaults toa.png
new-png
defaults tob.png
Tested on Ubuntu 18.04, libpng 1.6.34, compile with:
Adapted from: https://gist.github.com/niw/5963798
main.c
a.png
b.png
Image source: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Catherine_of_Aragon.png/430px-Catherine_of_Aragon.png
您可能最好查看专用的图像库,它将为您解码图像并返回它处于公认的结构中。当您想对图像进行实际操作(保存、显示等)时,它也将作为一个更好的平台。
You might be better off looking at a dedicated image library that will decode the image for you and return it in a recognised structure. It'll also serve as a better platform when you want to actually do something with the image (saving, displaying, etc).