【发布时间】:2014-03-27 19:20:05
【问题描述】:
目前我有一个ray-tracing program,它以浮点(从 0 到 1)或short 值(从 0 到 255)生成 RGB 值。 (相关代码在ImageTools.cpp和ImageTools.hpp。)
目前我可以通过写PPM 来生成图像,它非常大而且臃肿。
如何从这些数组之一写入 PNG 图像?
我不希望对大多数 Linux 系统上不常用的任何东西添加依赖项,因为到目前为止我有 0 个依赖项。
【问题讨论】:
-
Google 是您的朋友。搜索“png格式源代码”。
-
官方的PNG规范非常详尽——我成功地构建了一个PNG阅读器/编写器来阅读它。另请参阅stackoverflow.com/questions/22672112/png-idat-specification 以获得一些指示。
-
如果您担心依赖关系,您可以使用 CImg 库,它只是一个标头,您可以将其添加到您的代码中并与它一起分发。唯一的问题是编译时间显着增加。
-
@JaviV +1 CImg 非常好。不幸的是,我认为使用它来输出 PNG 仍然需要外部依赖项(参见 cimg.sourceforge.net/reference/group__cimg__files__io.html)。
-
是的,我忘了 :( 那么我也建议使用 libpng