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