所以,下载方法是:
private void imageDownload(String file_path) throws IOException {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
Response response = call.execute();
saveImage(response);
}
字符串
保存方法为:
public void saveImage(Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
BufferedImage image = ImageIO.read(inputStream);
File outputFile = new File("images/"+ new Date() + ".png");
ImageOutputStream ios = new FileImageOutputStream(outputFile);
ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writer.setOutput(ios);
writer.write(image);
}
型
结果是:
源图像看起来像source cat image
下载并保存后的图像:
的数据
是的,它是真实的的大小。
图片来源:3872x2592.jpeg
下载的图像为90x60.png
我该怎么做才能解决这个问题?我尝试了不同的图像格式,但它没有帮助。
1条答案
按热度按时间l2osamch1#
我第一次尝试下载图像时,我得到了一个162字节的结果,但第二次它对我来说工作得很好,我得到了正确的分辨率,所以也许可以尝试再次运行您的代码?或者,您也可以在浏览器中打开图像,然后按CTRL(或Mac上的CMD)+ S保存图像。我也不知道为什么你有这么复杂的代码来保存你的图像,因为
Files.write(Path.of(file), new URL(url).openStream().readAllBytes());
应该做的很好。