通过网络Url下载图片并下载到本地相册

BitMapFactory.decodeByteArray返回null,完美解决

 /**
     * 下载图片
     *
     * @param context
     * @param path
     * @return
     * @throws Exception
     */
    public static final int REQUEST_TIMEOUT = 10 * 1000;//设置请求超时10秒钟
    public static byte[] getImage(Context context, String path) throws Exception {
        URL url = new URL(path);
        HttpURLConnection httpURLconnection = (HttpURLConnection) url.openConnection();
        httpURLconnection.setRequestProperty("cookie", "wallet_token=" + PreferenceFile
                .getUserToken(context));
        httpURLconnection.setRequestMethod("GET");
        httpURLconnection.setReadTimeout(REQUEST_TIMEOUT);
        InputStream in = null;
        byte[] b = new byte[1024];
        int len = -1;
        if (httpURLconnection.getResponseCode() == HttpStatus.SC_OK) {
            in = httpURLconnection.getInputStream();
            byte[] result = readStream(in);
            in.close();
            return result;
        }
        return null;
    }
    public static byte[] readStream(InputStream in) throws Exception {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = -1;
        while ((len = in.read(buffer)) != -1) {
            outputStream.write(buffer, 0, len);
        }
        outputStream.close();
        in.close();
        return outputStream.toByteArray();
    }
/**
     * 图片保存本地
     * @param context
     * @param bmp
     */
    public static void saveImageToGallery(Context context, Bitmap bmp) {
        // 首先保存图片
        String SD_CARD_PIC_FILE = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg";

        File file = new File(SD_CARD_PIC_FILE); 
        if (!file.exists()) { 
             file.delete();
       }
        // String fileName = System.currentTimeMillis() + ".jpg";
        // currentFile = new File(appDir, fileName);
       FileOutputStream fos = null; 
        try { 
            fos = new FileOutputStream(file); 
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
            fos.flush(); 
        } catch (FileNotFoundException e) { 
           e.printStackTrace(); 
        } catch (IOException e) { 
           e.printStackTrace(); 
        } finally { 
                try { 
                   if (fos != null) {
                       fos.close(); 
                   } 
                } catch (IOException e) {
          e.printStackTrace(); } 
         } 
    // 其次把文件插入到系统图库
    // try {
    // MediaStore.Images.Media.insertImage(context.getContentResolver(),
    // currentFile.getAbsolutePath(), fileName, null);
    // } catch (FileNotFoundException e) {
    // e.printStackTrace();
    // }
   // 最后通知图库更新 
    context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(file.getPath())))); }


 
class ErweimaAsyncTask extends AsyncTask<String, Integer, byte[]> {

        @Override
        protected byte[] doInBackground(String... paramArray) {
            try {
                return Utils.getImage(ShowWebViewActivity.this, paramArray[0]);
            } catch (Exception e) {
                return null;
            }
        }

        @Override
        protected void onPostExecute(byte[] result) {
            if(result != null) {
                try {
                    mImageByte = result;
                    int length = result.length;
                    Bitmap mBitmap = BitmapFactory.decodeByteArray(result, 0, length);
                    Utils.saveImageToGallery(ShowWebViewActivity.this, mBitmap);
                } catch (WindowManager.BadTokenException e) { // activity结束后dialog调用show方法等操作
                }
            }
        }
    }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值