【问题标题】:Boost::GIL How to save image as JPEG or PNG into char*?Boost::GIL 如何将图像以 JPEG 或 PNG 格式保存到 char* 中?
【发布时间】:2011-12-23 18:18:43
【问题描述】:

所以我在保存到文件时看到了周围的样本。但我想知道是否可以保存到 char* 或字符串而不是文件中 - 可以说将其保存在内存中?

【问题讨论】:

  • 所以你的意思是一个原始内存缓冲区,代表 JPEG 或 PNG 编码的图像?
  • @Christian Rau:一个原始内存缓冲区,其中包含 JPEG 或 PNG 编码的图像
  • GIL 有办法复制内存中已经存在的图像(boost.org/doc/libs/1_47_0/libs/gil/doc/html/…,图像和图像视图之间的区别)。您希望通过将内存中内容的不同副本复制到也在内存中的字节包中得到什么?
  • @Max Lybbert - 例如,您可以使用它通过 HTTP 生成 PNG 字节流,以便在不写入磁盘的情况下即时生成图像。
  • @Max Lybbert:一般我想做msandiford建议=)

标签: c++ boost save jpeg boost-gil


【解决方案1】:

在 boost 本身中似乎没有任何东西可以促进这一点。所有 I/O 似乎都基于提供文件名。

但是,似乎有一个名为 io_new 的扩展 here 具有基于流的 I/O。

有关示例,请参阅文档 here(搜索“Reading And Writing In-Memory Buffers”)。

【讨论】:

  • 我可以确认这在 boost 主线版本中是不可能的。我最终选择了 ImageMagick,但它比我预期的要重。 io_new 或直接libpng 是更清洁的解决方案
  • 注意io_new的作者其实是Boost.GIL的维护者,所以代码质量肯定很高(上个月他在Boost ML上发帖要求合并io_new 进入主线 Boost;不确定情况如何。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
相关资源
最近更新 更多