您的位置:首页 > 理论基础 > 计算机网络

通过Java HTTP连接将网络图片下载到本地

2017-08-18 11:23 459 查看
package imageView;  

import java.io.ByteArrayOutputStream;  

import java.io.File;  

import java.io.FileOutputStream;  

import java.io.InputStream;  

import java.net.HttpURLConnection;  

import java.net.URL;  

/** 

 * @说明 从网络获取图片到本地 

 * @author 崔素强 

 * @version 1.0 

 * @since 

 */  

public class GetImage {  

    /** 

     * 测试 

     * @param args 

     */  

    public static void main(String[] args) {  

        String url = "http://www.baidu.com/img/baidu_sylogo1.gif";  

        byte[] btImg = getImageFromNetByUrl(url);  

        if(null != btImg && btImg.length > 0){  

            System.out.println("读取到:" + btImg.length + " 字节");  

            String fileName = "百度.gif";  

            writeImageToDisk(btImg, fileName);  

        }else{  

            System.out.println("没有从该连接获得内容");  

        }  

    }  

    /** 
     * 将图片写入到磁盘 

     * @param img 图片数据流 

     * @param fileName 文件保存时的名称 

     */  

    public static void writeImageToDisk(byte[] img, String fileName){  

        try {  

            File file = new File("C:\\" + fileName);  

            FileOutputStream fops = new FileOutputStream(file);  

            fops.write(img);  

            fops.flush();  

            fops.close();  

            System.out.println("图片已经写入到C盘");  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

    /** 

     * 根据地址获得数据的字节流 

     * @param strUrl 网络连接地址 

     * @return 

     */  

    public static byte[] getImageFromNetByUrl(String strUrl){  

        try {  

            URL url = new URL(strUrl);  

            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  

            conn.setRequestMethod("GET");  

            conn.setConnectTimeout(5 * 1000);  

            InputStream inStream = conn.getInputStream();//通过输入流获取图片数据  

            byte[] btImg = readInputStream(inStream);//得到图片的二进制数据  

            return btImg;  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

        return null;  

    }  

    /** 

     * 从输入流中获取数据 

     * @param inStream 输入流 

     * @return 

     * @throws Exception 

     */  

    public static byte[] readInputStream(InputStream inStream) throws Exception{  

        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  

        byte[] buffer = new byte[1024];  

        int len = 0;  

        while( (len=inStream.read(buffer)) != -1 ){  

            outStream.write(buffer, 0, len);  

        }  

        inStream.close();  

        return outStream.toByteArray();  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 图片 网络