【发布时间】:2019-05-23 00:11:27
【问题描述】:
我正在尝试保存 png 图像,但我无法创建图像,尽管 this solution。
我正在使用 selenium webDriver 截取 chrome 浏览器窗口的屏幕截图,getScreenshotAs() 返回我放入 ByteArrayInputStream 对象的字节数组。我还有一个矩形view,其中包含我想要裁剪图像的尺寸,使用getSubimage()。
使用下面提供的代码,不会创建图像,当我添加 imgfile.createNewFile() 时会创建一个文件,但它完全是空的,并且没有注册为“png”文件。
基本上,我要做的就是将内存中的图像作为字节数组,将其裁剪为特定尺寸,然后将其保存为 png 文件。我知道真的很基本,但我无法弄清楚。非常感谢任何帮助。
ByteArrayInputStream imgbytes = new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));
BufferedImage bimg = ImageIO.read(imgbytes);
bimg = bimg.getSubimage(view.getX(), view.getY(), view.getWidth(), view.getWidth());
File imgfile = new File("C:\\Users\\User\\Documents\\newimg.png");
ImageIO.write(bimg, "png", imgfile);
【问题讨论】:
-
你确定'new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));'正在向您提供一些数据吗?您可能也想发布该代码。
-
不确定问题出在图像的“保存”上,更可能是生成问题,但根据上下文代码无法知道
-
@MadProgrammer 对于缺少上下文,我深表歉意,我已编辑问题以提供更多详细信息。请让我知道是否还有其他可以帮助的内容。
-
ImageIO.write(...)返回一个boolean指示图像是否已写入。你的情况有什么价值?
标签: java file-io bufferedimage