一、保存图片到本地
public static void saveToSystemGallery(Context context, Bitmap bmp) {
// 首先保存图片
File appDir = new File(Environment.getExternalStorageDirectory(), "vgmap");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
}
二、 保存网络图片到本地,同时插入到系统相册
/**
* 下载 分享海报图片 并保存本地
*/
private void mDownloadPosterPic(String url) {
String fileDir = Environment.getExternalStorageDirectory() + "/temp";
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(fileDir);
OkHttpUtils.get(url)
.tag(this)
.execute(new DownloadFileCallBack(fileDir, fileName));//保存到sd卡
}
saveToSystemGallery(mContext, file, fileNameNew); //把文件插入到系统图库
/**
* 保存图片到本地,其次把文件插入到系统图库
*
* @param context
* @param file
* @param fileName
*/
public static void saveToSystemGallery(Context context, File file, String fileName) {
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
}
三、网络URL图片地址转Bitmap
以下方法需要一个线程去访问
public Bitmap getBitmap(String imgUrl) {
InputStream inputStream = null;
ByteArrayOutputStream outputStream = null;
URL url = null;
try {
url = new URL(imgUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setReadTimeout(2000);
httpURLConnection.connect();
if (httpURLConnection.getResponseCode() == 200) {
//网络连接成功
inputStream = httpURLConnection.getInputStream();
outputStream = new ByteArrayOutputStream();
byte buffer[] = new byte[1024 * 8];
int len = -1;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
byte[] bu = outputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(bu, 0, bu.length);
return bitmap;
} else {
Log.d(TAG, "网络连接失败----" + httpURLConnection.getResponseCode());
}
} catch (Exception e) {
// TODO: handle exception
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
更多相关问题可参考:Android网络URL图片地址转Bitmap并且保存到本地