【问题标题】:RGB888 (24 bit) to PNG/JPEG image algorithmRGB888(24 位)转 PNG/JPEG 图像算法
【发布时间】:2012-10-14 11:37:50
【问题描述】:

我需要将 24 位 RGB(888) 图像数据转换为 PNG 或 JPEG 图像(尽可能)。需要更简单的方法来执行此操作,例如将 RGB888 转换为 BMP 而无需任何压缩。如果在 RGB 数据中添加 PNG/JPEG 标头而无需进行少量修改,那就太好了。准备应要求提供更多详细信息..

提前谢谢..

语言/平台:C/Linux

【问题讨论】:

  • Write a jpeg with libjpeg - 有帮助吗?
  • 不可能通过“将 JPEG 标头添加到 RGB 数据而几乎没有修改”来创建 JPEG 图像。检查libjpeg(参考 C 中的 JPEG 编码器和解码器实现)将 RGB 转换为 JPEG。
  • 感谢 Roman R 和 Simon,我将检查 libjpeg 以进行 jpeg 转换。任何人都可以按照之前的要求帮助我进行 RGB888 tp PNG 转换..
  • 试试 libpng?第一次点击谷歌。
  • 感谢 Art,我也会研究 libpng。同时,任何人都可以在不使用任何库的情况下手动将 RGB888 转换为 PNG(因为不需要压缩)。

标签: c png jpeg rgb image-conversion


【解决方案1】:

使用miniz - 一个单一的 C 源文件 Deflate/Inflate 压缩库,具有与 zlib 兼容的 API、ZIP 存档读取/写入、PNG 写入。

【讨论】:

    【解决方案2】:

    如果您只需要一种图像格式,那么最简单的可能是 ppm(或 pgm 表示灰度)

    您只需在未压缩的二进制数据中添加一个小的 ascii 标头,大多数图像应用程序都会读取它。

    P6   <-- magic value for binary data
    # a comment if you want
    640 480    <-- width x height
    255      <-- max pixel value
    .... binary data here .......
    

    【讨论】:

    • @leonbloy - 是的,pgm/ppm 的好处是您可以使用编辑器编写标题。如果您的编辑器可以处理二进制文件,您甚至可以将原始内存转储到图像中进行编辑
    猜你喜欢
    • 2011-01-27
    • 2013-04-22
    • 1970-01-01
    • 2013-10-08
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多