下载图片但图片大小在 kotlin 中不正确

download image but the size of image is not correct in kotlin

我在下载图片时发现了一个惊人的问题。

图片的url为http://www.xbiquge.la/files/article/image/50/50353/50353s.jpg

我用代码下载的时候可以在chrome.but中打开保存,但是失败了

图片查看器打不开

注意:错误的图片小于正确的图片文件's.And其他网站的其他图片是可以的。

不知道有什么帮助happen.Please,谢谢提前

以下是我的代码

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下载image.it也失败了...

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();

看起来这里回答的问题是:

我认为您需要指定图像的保存格式和压缩类型。

我找到了正确的解决方案。 原因是文件是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)