【问题标题】:Fastest way to convert to jpg? [closed]转换为jpg的最快方法? [关闭]
【发布时间】:2017-01-02 08:00:39
【问题描述】:

我在 byte[] 变量中有一个图像,我的目标是将其转换为 JPG 格式,然后从中创建一个 BufferedImage 变量。

速度在这里非常重要。仅在 500kb 图像上从 byte[] 创建 BufferedImage 需要 0.5 秒。

一种方法是(但非常慢)是:

  1. 从图像字节[]创建一个 BufferedImage

  2. 使用ImageIO.write将图片转成jpg并写入磁盘

  3. 从磁盘读取图像并从中创建一个 BufferedImage

请问有什么更快的方法吗?

编辑:

字节数组包含我已读取 HDD 的有效 PNG、JPG 或 GIF 图像的内容。

【问题讨论】:

  • 提示:byte[] 不是格式。那只是一个字节数组。图像的格式 取决于其内容。您可能希望通过避免使用这种不清楚的语言来使您的问题更清楚。换句话说:您不会将字节数组*convert 转换为JPG。可能您的数据已经是 JPG 格式了,不是吗?
  • @GhostCat 抱歉,英语不是我的母语,你能编辑我的问题吗?
  • 我不能,因为我不知道你在追求什么 ;-)
  • @GhostCat 将我的 byte[] 变量转换为 BufferedImage 变量,同时将图像转换为 jpg
  • 将您的代码与现有解决方案进行比较,看看您是否使用相同的解决方案。由于我没有看到任何代码,很难知道这是否正确

标签: java


【解决方案1】:

有一个名为 OpenCV 的库。它是一个 C/C++ 库,但它也通过 JNI 包装器支持 Java。不得不提的是,OpenCV 专注于计算机视觉和通用图像处理,在压缩图像和使用火箭科学方法将图像写入磁盘方面并不那么重。


当您将 500 kB 的 JPG 图像读入内存时,其原始数据可能要大得多。


老实说,如果我是你,我会坚持使用 Java API 中已经存在的东西(例如 ImageIO)。

如果您计划处理大量图像,您可以创建一个您希望转换为不同格式的文件列表,将您的应用程序设计为多线程并将任务分离到多个线程中。这真的是赢回时间的方法。

【讨论】:

  • 您是否擅长将问题重新用作答案??
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 2017-10-07
  • 2010-12-21
  • 1970-01-01
  • 2018-09-10
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多