gpt4 book ai didi

Java在不创建文件的情况下将图像转换为输入流

转载 作者:太空狗 更新时间:2023-10-29 22:51:19 25 4
gpt4 key购买 nike

对于我正在处理的小程序,我需要将 BufferedImage 文件转换为输入流,以便我可以将图像上传到我的 MySQL 服务器。最初我使用的是这段代码:

Class.forName("com.mysql.jdbc.Driver").newInstance();  
Connection connection =
DriverManager.getConnection(connectionURL, "user", "pass");

psmnt = connection.prepareStatement(
"insert into save_image(user, image) values(?,?)");
psmnt.setString(1, username);

ImageIO.write(image, "png", new File("C://image.png"));
File imageFile = new File("C://image.png");
FileInputStream fis = new FileInputStream(imageFile);

psmnt.setBinaryStream(2, (InputStream)fis, (fis.length()));
int s = psmnt.executeUpdate();

if(s > 0) {
System.out.println("done");
}

(同时捕获相关异常)代码卡在小程序尝试将图像保存到计算机的部分。该代码在 Eclipse 中或每当我从本地主机运行小程序时都能完美运行,因此我假设问题在于小程序在将文件保存到用户计算机时所具有的权限。

我只是想知道是否有一种方法可以将图像文件转换为输入流而无需将文件保存到用户的计算机上。我尝试使用:

ImageIO.createImageInputStream(image);

但后来我无法将 ImageInputStream 转换回 InputStream。有什么建议吗?

谢谢!

最佳答案

通常您会为此目的使用 ByteArrayOutputStream。它充当内存中的流。

ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image,"png", os);
InputStream fis = new ByteArrayInputStream(os.toByteArray());

关于Java在不创建文件的情况下将图像转换为输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com