DirectBuffer加速ImageIO

问题描述 投票:1回答:1

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

我想知道我是否可以使用直接ByteBuffer来更快地写入磁盘?我正在考虑将BufferedImage放入直接的ByteBuffer,最后使用FileChannel保存到磁盘。我没有办法这样做。我想知道如何将BufferedImage用于指导ByteBuffer?一些示例代码会有很多帮助。

java nio bufferedimage
1个回答
-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回答试试这个。应该更快。

© www.soinside.com 2019 - 2024. All rights reserved.