如何解决将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");
}
这解决了我的问题。再次感谢昨天的评论者。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。