为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只斗牛犬 2019-03-14 13:15:40
我尝试从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!");        }    }}
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-04-22
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

byte[] byteArray = new byte[这个数字暂时改成大一点的试试,比一张图片稍大即可]

你说图片比原来图片大一点,你直接点图片url 右键另存为,然后跟你代码爬下来的比较一下看看。
如果不一样的话我觉得很可能是因为二进制没写好的问题。


查看完整回答
反对 回复 2019-04-22
  • 3 回答
  • 0 关注
  • 792 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号