DirectBuffer加速ImageIO

时间:2019-03-14 12:16:16

标签: java nio bufferedimage

我有很多操作,涉及使用第三方库生成BufferedImage对象并将其保存到jpg文件。有时一个处理可以节省10,000多个这样的费用。目前,我直接使用ImageIO.write(image, "jpg", file),但效果并不理想。

我想知道是否可以使用直接ByteBuffer来提高磁盘写入速度?我正在考虑将BufferedImage放入直接的ByteBuffer中,最后使用FileChannel保存到磁盘。我没有找到一种方法。我想知道如何将BufferedImage指向ByteBuffer?一些示例代码会很有帮助。

1 个答案:

答案 0 :(得分:-1)

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public byte[] toByteArray(BufferedImage image) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();            
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
    encoder.encode(image);            
    return baos.toByteArray();
}

this答案尝试此操作。应该更快。