【问题标题】:JPEG Load/Save to/from rgba via Win32 API in C via grid32通过grid32在C中通过Win32 API加载/保存到rgba/从rgba加载/保存
【发布时间】:2023-04-09 01:05:01
【问题描述】:

我希望能够通过 api 在 Windows 上加载/保存 jpeg 文件,特别是 gdi32.dll,因为它看起来普遍存在于所有版本的 Windows 中。

但我无法从每个颜色 4 个字节的像素数组中找到有关如何执行此操作的任何信息(rgba、bgra、rgb 可以,因为 jpeg 不支持 alpha 等)

对外部库或 gdi+ 不感兴趣。 gdi32应该有这个能力,但我似乎找不到足够的信息来说明如何实现它。

【问题讨论】:

  • 为什么你不能使用gdiplus?您将很难找到任何没有 gdiplus 的 Windows 系统。

标签: c winapi jpeg gdi


【解决方案1】:

我将忽略您拒绝使用 gdi32.dll 之外的任何内容,因为这种要求不太可能帮助任何人,正如 @David Heffernan 所说,gdi32.dll 中不支持 JPEG。

有多种方法可以加载/保存 winapi 中内置的 JPEG 图片,并且一直支持到 Windows 2000(及更早版本...)。

  1. OleLoadPicture / OleSavePicture - 虽然我不确定以这种方式保存自己的 JPEG 文件是否很容易。
  2. Gdiplus::Image 允许加载和保存 JPEG 文件。

【讨论】:

    【解决方案2】:

    普通 GDI 不支持 JPEG。

    如果您不支持使用 GDI 以外的库,那么您将不得不编写自己的 JPEG 库。请允许我建议您重新考虑您的要求。

    【讨论】:

    • 不需要第三方库。 Windows Imaging Component 随每个受支持的 Windows 平台一起提供。
    • @IInspectable 那不是 gdi
    • 正确,但它也不是您最初声称的第 3 方库。它是 Windows 附带的第一方库。
    • @IInspectable 是的,我在那里很马虎
    【解决方案3】:

    GDI 是图形设备接口。它的职责包括将原语渲染到屏幕或屏幕外设备上下文。不包括编码器和解码器。

    标准的 Windows 编码器和解码器通过Windows Imaging Component 提供。此组件从 Windows XP SP2 开始可用。它也适用于 Windows 应用商店应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 2015-02-12
      • 2019-12-07
      • 1970-01-01
      • 2014-10-07
      • 2017-05-15
      • 2013-07-31
      • 2019-02-15
      相关资源
      最近更新 更多