如何将BufferedImage对象转换为InputStream或BLOB?

Asi*_*sif 9 java blob inputstream

我试图将用户上传的图像存储到具有LONGBLOB属性的数据库中...我遇到了一个问题,PreparedStatement其中有两个方法来设置blob:

public void setBinaryStream(int parameterIndex, InputStream x)

public void setBlob(int parameterIndex, Blob x)

public void setBlob(int parameterIndex, InputStream inputStream)

现在的问题是我有一个BufferedImage必须转换成BlobInputStream上传的对象......

如何在不丢失原始图像格式或质量的情况下执行此操作?

aio*_*obe 29

如何在不丢失原始图像格式或质量的情况下执行此操作?

您需要使用一些适当的(无损)格式保存它.该PNG格式是一种选择.

ImageIO类有写出的图像输出流的方法.

这里有一个完整的例子,说明如何掌握一个InputStream,你可以从中读取内容的PNG表示BufferedImage:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", baos);
InputStream is = new ByteArrayInputStream(baos.toByteArray());
Run Code Online (Sandbox Code Playgroud)