【发布时间】:2010-09-26 21:02:05
【问题描述】:
我能否仅使用 Platform SDK 将内存中的位图转换为 PNG(即不写入文件)? (即没有 libpng 等)。
我还希望能够为此图像定义透明颜色(不是 Alpha 通道)。
GdiPlus 解决方案似乎仅限于宽度可被 4 整除的图像。在调用 Save() 期间,其他任何事情都会失败。有谁知道这个限制的原因以及我如何/是否可以解决它?
更新:赏金
我正在开始赏金(我真的希望它能够工作)。我实现了 GDI+ 解决方案,但正如我所说,它仅限于四边形宽度的图像。赏金将颁发给能够解决此宽度问题(不更改图像尺寸)或能够提供可行的替代非 GDI+ 解决方案的任何人。
【问题讨论】:
-
为帮助您入门,我找到了一个使用 gdi+ 将位图保存为 png 的示例:dotnet-snippets.de/dns/gdi-speichern-eines-png-SID814.aspx 也许有用
-
这个解决方案对我有用,即使是宽度不能被 4 整除的图像。我在 Windows Vista 上并使用 Visual C++ 2008。
-
为什么不想使用 libpng?它有一个非常宽松的许可证。
-
libpng 是否进行内存编码? (或只是文件?)
-
你可以使用 png_set_write_fn 钩住 libpng 的输出,然后用它做任何你想做的事情。