您的位置:首页 > 其它

图片转换成字节流或者保存到本地

2016-07-12 14:10 417 查看
package com.hg.threadPoolExecutorDemo;  

import java.io.ByteArrayOutputStream;    

import java.io.File;    

import java.io.FileOutputStream;    

import java.io.InputStream;    

import java.net.HttpURLConnection;    

import java.net.URL;    

/**  

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

 * @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("D:\\" + fileName);    

            FileOutputStream fops = new FileOutputStream(file);    

            fops.write(img);    

            fops.flush();    

            fops.close();    

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

        } 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] view
plain copy

package com.hg.threadPoolExecutorDemo;  

  

import java.io.File;  

import java.io.FileOutputStream;  

import java.io.InputStream;  

import java.io.OutputStream;  

import java.net.URL;  

import java.net.URLConnection;  

  

public class DownloadImage {  

  

    /**  

     * @param args  

     * @throws Exception   

     */  

    public static void main(String[] args) throws Exception {  

        // TODO Auto-generated method stub    

//      download("http://ui.51bi.com/opt/siteimg/images/fanbei0923/Mid_07.jpg",  

//              "51bi.jpg", "D:\\image\\");  

        download("http://www.hao123.com/",  

                "nidi.html", "D:\\image\\");  

    }  

  

    public static void download(String urlString, String filename,  

            String savePath) throws Exception {  

        // 构造URL    

        URL url = new URL(urlString);  

        // 打开连接    

        URLConnection con = url.openConnection();  

        //设置请求超时为5s    

        con.setConnectTimeout(5 * 1000);  

        // 输入流    

        InputStream is = con.getInputStream();  

  

        // 1K的数据缓冲    

        byte[] bs = new byte[1024];  

        // 读取到的数据长度    

        int len;  

        // 输出的文件流    

        File sf = new File(savePath);  

        if (!sf.exists()) {  

            sf.mkdirs();  

        }  

        OutputStream os = new FileOutputStream(sf.getPath() + "\\" + filename);  

        // 开始读取    

        while ((len = is.read(bs)) != -1) {  

            os.write(bs, 0, len);  

        }  

        // 完毕,关闭所有链接    

        os.close();  

        is.close();  

    }  

  

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