我在byte[]
变量中有一个图片,我的目标是将其转换为JPG格式,然后从中创建一个BufferedImage
变量。
速度在这里非常重要。只需在500kb图像上从BufferedImage
创建byte[]
,需要0.5秒。
一种方法是(但非常慢):
从图像字节[]
使用ImageIO.write将图像转换为jpg并将其写入磁盘
从磁盘读取图像并从中创建BufferedImage
有没有更快的方法呢?
修改
字节数组包含我读过硬盘的有效PNG,JPG或GIF图像的内容。
答案 0 :(得分:0)
有一个名为OpenCV的库。它是一个C / C ++库,但它也通过JNI包装器支持Java。我不得不提一下,OpenCV专门研究计算机视觉和一般图像处理,而不是压缩图像和使用火箭科学方法将图像写入磁盘。
当您将原始数据读入内存时,500 kB的JPG图像可能要大得多。
老实说,如果我是你,我会坚持使用Java API中已有的东西(例如ImageIO)。
如果您计划处理大量图像,则可以创建要转换为其他格式的文件列表,将应用程序设计为多线程,并将任务分隔为多个线程。这真的是赢回时间的方式。