JAVA抓取网页的图片到本地后显示错乱

我尝试从url获取图片然后保存到本地,但是图片显示不正常,而且貌似图片大小比原图会大了一点,这是为什么?

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.net.URLConnection;


public class DownloadImage {

    public static void main(String[] args){

        BufferedReader bufferedReader = null;

        FileOutputStream fileOutputStream = null;

        URL imageUrl = null;

        String str = null;

        URLConnection urlConnection = null;

        InputStream urlInputStream = null;

        byte[] byteArray = new byte[1024]; 

        File imageFile = null;

        

        try {

            bufferedReader = new BufferedReader(new FileReader("resources/imageURL"));    //这个文件的内容是url地址

            while((str = bufferedReader.readLine()) != null){ 

                imageUrl = new URL(str);

                urlConnection = imageUrl.openConnection();    

                urlConnection.connect();        

                urlInputStream = urlConnection.getInputStream();

                imageFile = new File("resources/image/" + str.substring(str.lastIndexOf("/")+1));

                if(!imageFile.exists()) imageFile.createNewFile();

                fileOutputStream = new FileOutputStream(imageFile);

                while(urlInputStream.read(byteArray) != -1){    

                    fileOutputStream.write(byteArray);

                }

                fileOutputStream.close();

                urlInputStream.close();

            }

        } catch (IOException e) {

            e.printStackTrace();

        }finally{

            try {

                bufferedReader.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

            System.out.println("Done!");

        }

    }

}

一只斗牛犬
浏览 793回答 3
3回答

阿波罗的战车

网站在加载或显示这个图片的时候可能会对图片大小进行处理,所以不一定是原图的大小,你取到得图片才是真正的原图

慕妹3146593

byte[] byteArray = new byte[这个数字暂时改成大一点的试试,比一张图片稍大即可]你说图片比原来图片大一点,你直接点图片url 右键另存为,然后跟你代码爬下来的比较一下看看。如果不一样的话我觉得很可能是因为二进制没写好的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java