我有很多操作涉及使用第三方库生成BufferedImage对象并将其保存到jpg文件。有时一次处理可以有超过10,000次这样的节省。目前我直接使用ImageIO.write(image, "jpg", file)
,但性能不是很理想。
我想知道我是否可以使用直接ByteBuffer来更快地写入磁盘?我正在考虑将BufferedImage放入直接的ByteBuffer,最后使用FileChannel保存到磁盘。我没有办法这样做。我想知道如何将BufferedImage用于指导ByteBuffer?一些示例代码会有很多帮助。
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回答试试这个。应该更快。