【问题标题】:Convert BMP file to PNG file in-memory [duplicate]将BMP文件转换为内存中的PNG文件[重复]
【发布时间】:2011-11-01 01:10:31
【问题描述】:

可能重复:
Convert bitmap to PNG in-memory in C++ (win32)

我有一个 BMP 文件作为 char* 缓冲区。我想将此 BMP 文件转换为内存中的 PNG 文件。我试过了,也搜了一圈,没找到有用的东西。

我可以假设 Windows XP 或更高版本,没有 .NET 和 C99。

【问题讨论】:

  • 你已经“尝试过了”——什么你试过了吗?
  • 你认为 BMP 和 PNG 的区别是什么?
  • 您是否尝试过使用libpng
  • char* 是 DIB 还是 BMP,包括它的标题?
  • @Ash Burlaczenko:可能是一些编码(LTR 或 RTL),可能还有标头差异。 @Kerrek SB:我尝试在 GDI+ 中环顾四周,但我一直在尝试对扁平化的 C++ API 和 IIRC 进行混淆,而只能使用 IStream*,我不知道该怎么做。

标签: c windows png bmp


【解决方案1】:

ImageMagick 有一个 C API。我会假设,因为它允许您对图像执行各种转换,这些图像保存在内存中,因此您应该能够将其加载为 BMP 并最终将其保存为 PNG。

【讨论】:

    【解决方案2】:

    在记忆中,你可能必须自己做。您必须了解 BMP 和 PNG 文件的标题。成功创建标头后,您可以复制数据,但数据在 BMP 和 PNG 中存储的格式不同,因此这是一项非常耗时的任务。

    另一种方法是使用外部工具并从 C 代码调用它来进行转换。但是内存中的问题将成为问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    相关资源
    最近更新 更多