通过网络Url下载图片并下载到本地相册
2016-09-08 17:02
477 查看
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方法等操作 } } } }
相关文章推荐
- 第四章 网络下载之httpurlconnection 从网络上下载一张图片,在本地显示
- 通过Java HTTP连接将网络图片下载到本地
- Android下载网络图片并保存在本地相册
- android通过NDK连接网络下载图片到本地
- ASP.NET通过URL将图片下载到电脑本地文件夹
- 通过Java HTTP连接将网络图片下载到本地
- 通过Java HTTP连接将网络图片下载到本地
- 通过图片URL下载图片到本地
- PHP通过url下载远程图片到本地
- 通过Java HTTP连接将网络图片下载到本地
- 获取网络图片并下载到本地相册
- 通过Java HTTP连接将网络图片下载到本地
- 通过AFNetworking下载网络闪屏用的图片并存储到本地同时获取header头相关信息
- iOS 网络请求图片下载到本地相册
- Android 通过开源框架实现加载网络图片并下载到SD卡通知系统相册显示,(并实现分享图片功能)
- PHP通过url下载远程图片到本地
- 通过Java HTTP连接将网络图片下载到本地
- 通过AFNetworking下载网络闪屏用的图片并存储到本地同时获取header头相关信息
- 通过URl将服务器的图片下载到本地并压缩
- 网络图片url或本地图片 转bitmap保存到系统相册