将BufferedImage传递到用于图像文件的FileInputStream中

问题描述

我有两个需要一起工作的独立代码一个是我自己编写的,另一个是来自另一个项目的。我基本上在项目的一部分中创建了一个缓冲图像。这是其中的摘录:

BufferedImage screenshot = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_ARGB);

在另一软件中,它接受一个图像文件,然后作为JSON / POST数据传递给另一项服务。这是接受文件的地方:

try(InputStream file = new FileInputStream("temp.png")) {
                sendFile(out,"file",file,"temp.png");
            }

我在Java中处理图像没有太多经验,我目前的解决方案是让第一个程序将BufferedImage写入这样的文件

File tempFile = new File("/","temp.png");
ImageIO.write(screenshot,"PNG",tempFile);

然后第二段代码能够正确处理它。问题是由于它需要删除临时文件而引起的。有什么办法可以简化吗?预先感谢。

解决方法

通过@Mas和评论者的链接找到了解决方案。

第一组代码添加了一个名为“ screenshotOutput”的ByteArrayOutputStream

ByteArrayOutputStream screenshotOutput = new ByteArrayOutputStream();
ImageIO.write(screenshot,"png",screenshotOutput);

第二组代码已修改为接受ByteArrayInput流。

try(InputStream file = new ByteArrayInputStream(screenshotOutput.toByteArray());) {
                sendFile(out,"file",file,"temp.png");
            }

这解决了我的问题。再次感谢昨天的评论者。