第一步:添加权限
添加权限:参考我的另一篇文章,授权权限。
第二步:本地资源图片、网络资源图片转bety[]
1,本地资源图片转bety[]
/**
* 读取 本地文件,转为字节数组
* @param url 本地文件路径
* @return
* @throws IOException
*/
private byte[] getImage(String url) throws IOException{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(url));
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
byte[] temp = new byte[2048];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
}
in.close();
byte[] content = out.toByteArray();
return content;
}
2,网络资源图片转bety[]
/**
* 获取 文件 流
* @param url
* @return
* @throws IOException
*/
private static byte[] getFile(String url) throws IOException{
URL urlConet = new URL(url);
HttpURLConnection con = (HttpURLConnection)urlConet.openConnection();
con.setRequestMethod("GET");
con.setConnectTimeout(4 * 1000);
InputStream inStream = con .getInputStream(); //通过输入流获取图片数据
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
inStream.close();
byte[] data = outStream.toByteArray();
return data;
}
第三步:写入系统图库
第四步:更新到相册
/**
* 保存图片到指定路径
* @param context
* @param *bitmap 要保存的图片
* @param fileName 自定义图片名称
*/
public void saveImageToGallery( Context context, byte[] data, String fileName) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data,0,data.length);
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
fileName = fileName + format.format(new Date())+".JPEG";
// 保存图片至指定路径
String storePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath()+"LS" ;
File appDir = new File(storePath);
if (!appDir.exists()) {
appDir.mkdir();
}
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
//通过io流的方式来压缩保存图片(80代表压缩20%)
boolean isSuccess = bitmap.compress(Bitmap.CompressFormat.JPEG, 80, fos);
fos.flush();
fos.close();
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//发送广播通知系统图库刷新数据
System.out.println("发送广播通知系统图库刷新数据");
Uri uri = Uri.fromFile(file);
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
Toast toast=;
if (isSuccess) {
Toast.makeText(context,"图片已保存至"+file,Toast.LENGTH_SHORT).show()
} else {
Toast toast=Toast.makeText(context,"图片保存失败",Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}