Java: BufferedImage to byte array and back

醉酒当歌 提交于 2019-11-26 20:28:36
Nikolay Kuznetsov

This is recommended to convert to a byte array

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
byte[] bytes = baos.toByteArray();
Christophe Roussy

Note that calling close or flush will do nothing, you can see this for yourself by looking at their source/doc:

Closing a ByteArrayOutputStream has no effect.

The flush method of OutputStream does nothing.

Thus use something like this:

ByteArrayOutputStream baos = new ByteArrayOutputStream(THINK_ABOUT_SIZE_HINT);
boolean foundWriter = ImageIO.write(bufferedImage, "jpg", baos);
assert foundWriter; // Not sure about this... with jpg it may work but other formats ?
byte[] bytes = baos.toByteArray();

Here are a few links concerning the size hint:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!