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

通过网络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方法等操作
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: