【问题标题】:How can i convert a big bmp to a png?如何将大bmp转换为png?
【发布时间】:2013-10-04 18:02:24
【问题描述】:

我正在尝试将一个非常大的 bmp 文件转换为 png。

我正在编写一个应用来制作分形图像,并且我想制作一个非常高分辨率的图像(如超高清)。

我将使用 RandomAccessFile 将位图像素图像直接保存到文件中,因此我不会将任何位图对象分配到内存中。问题是将临时位图转换为 png。

我找到了 BitmapRegionDecoder,但它对我的问题没有用。

在没有完整数据加载的情况下转换图像并不容易。 :(

我认为一个好的解决方案可能是这样的方法:convertToPng(InputStream bitmapData, OutputStream pngStream)。

我的问题是,如何在没有 OutOfMemoryException 的情况下将非常大的位图转换为 png?

【问题讨论】:

  • Aaand 问题是......?
  • 你很幸运,因为BMP数据结构没有压缩,每个像素都有自己的int数据,所以正如你所说,首先打开流,你需要跳过标题数据(我不知道什么是iso!搜索结构)。您需要读取像素数据作为缓冲区,读取->处理->保存,最后将它们放在一起。你有没有尝试过?!顺便说一句,好问题 +1
  • 是的,位图的读写很容易,我不知道如何使用缓冲区或字节流将其编码为 png :(
  • 是的!我还没有尝试过,但文档很清楚。谢谢! ♥

标签: java android bitmap png out-of-memory


【解决方案1】:

您可以尝试PNGJ 库(免责声明:我是作者),它允许逐行读取/写入 PNG 图像。

【讨论】:

猜你喜欢
  • 2016-09-16
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 2010-11-06
  • 1970-01-01
相关资源
最近更新 更多