下载URL图片并保存至sdcard

本文介绍了一种在Android应用中从网络下载图片的方法,并将其保存到设备上的具体实现过程。包括通过HTTP请求获取图片流、将图片流转换为Bitmap对象、保存Bitmap为本地文件以及从本地加载图片显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private void downloadImage(){

        filePath= "http://bbs.cndw.com/UploadFile/2012-2/20122161936623104.jpg";

        imgName = "yang.jpg";

         //使用【方法1取得的是InputStream,直接从InputStream生成bitmap

        try{

            Bitmap bitmap = BitmapFactory.decodeStream(getImageStream(filePath));

            if(bitmap!=null){

                saveFile(bitmap, "yang.jpg");  //调用保存方法

                File file = new File("/sdcard/mbookyang/yang.jpg");

                if(file.exists()){     //判断文件是否存在

                    Bitmap bm = BitmapFactory.decodeFile("/sdcard/mbookyang/yang.jpg");//File获取图片并转为Bitmap

                    imageView1.setImageBitmap(bm);

                }

            }

        }

        catch(Exceptione) {     

            Toast.makeText(this,"下载图片失败", 1).show();     

            e.printStackTrace();

        }

       

    }

   

    //方法1

    public InputStream getImageStream(String path)throws Exception{     

        URL url = newURL(path);     

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

        conn.setConnectTimeout(5 * 1000);        //设定超时

        conn.setRequestMethod("GET");   //GET为下载,POST为上传

        if(conn.getResponseCode()== HttpURLConnection.HTTP_OK){     

            returnconn.getInputStream();         //获得数据流  

        }     

        return null;   

    } 

   

    //方法2

    public byte[] getImage(String path) throwsException{     

        URL url = newURL(path);     

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

        conn.setConnectTimeout(5 * 1000);   

        conn.setRequestMethod("GET");    

        InputStream inStream = conn.getInputStream(); 

        if(conn.getResponseCode()== HttpURLConnection.HTTP_OK){     

            returnreadStream(inStream);     

        }     

        return null;     

    }    

    public static byte[] readStream(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);     

        }     

        outStream.close();     

        inStream.close();     

        returnoutStream.toByteArray();     

    }   

   

    //保存Bitmap为图片文件

    public void saveFile(Bitmap bitmap, String fileName) throws IOException {  

        File dirFile = new File("/sdcard/mbookyang");  

        if(!dirFile.exists()){  //判断路径是否存在,不存在则创建

            dirFile.mkdir();  

        }

        File savePath = new File("/sdcard/mbookyang/" + fileName);  //保存路径

        BufferedOutputStream bos = new BufferedOutputStream(newFileOutputStream(savePath));  

        bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);  //质量压缩为80%

        bos.flush();  

        bos.close();  

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值