下载图像,但kotlin中的图像大小不正确

kwvwclae  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(425)

我在下载图片时发现了一个惊人的问题。
图像的url为 http://www.xbiquge.la/files/article/image/50/50353/50353s.jpg 我可以打开它并保存在chrome中,但是当我按代码下载它时,它失败了。
我不能用图像浏览器打开它。
note:the size 错误图片的数量少于正确图片文件的数量,其他网站的其他图片也可以。
我不知道发生了什么。请帮忙,谢谢
下面是我的代码

val imgUrl = "http://www.xbiquge.la/files/article/image/50/50353/50353s.jpg"
val conn = URL(imgUrl).openConnection()
val bytes = conn.getInputStream().readBytes()
File("D:\\test.jpg").writeBytes(bytes)

我也试着用java来下载图片。这也是失败的。。。

URL url = new URL("http://www.xbiquge.la/files/article/image/50/50353/50353s.jpg");
URLConnection connection=url.openConnection();
InputStream inputStream = connection.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(new File("d:\\download.jpg")));
int c;
byte[] temp = new byte[1024 * 2];
while ((c = bufferedInputStream.read(temp)) != -1) {
    bufferedOutputStream.write(temp,0,c);
}
bufferedOutputStream.close();
inputStream.close();
nr9pn0ug

nr9pn0ug1#

看起来这里回答的问题是:kotlin:如何将图像从internet保存到内部存储器
我认为您需要指定格式和压缩类型,您希望如何保存图像。

7bsow1i6

7bsow1i62#

我找到了正确的解决办法。原因是该文件是gzip文件。必须使用以下代码下载它。

val openConnection = URL(url).openConnection()
//if the image file is gzip
val bytes = if (openConnection.contentEncoding == "gzip") {
    GZIPInputStream(openConnection.getInputStream()).readBytes()
} else {
    openConnection.getInputStream().readBytes()
}
val file = File("e:\\text.jpg")
file.writeBytes(bytes)

相关问题