Android保存多张图片到本地的实现方法保存多张图片到本地的实现方法
01.实际开发保存图片遇到的问题实际开发保存图片遇到的问题
业务需求业务需求
在素材list页面的九宫格素材中,展示网络请求加载的图片。如果用户点击保存按钮,则保存若干张图片到本地。具体做法
是,使用glide加载图片,然后设置listener监听,在图片请求成功onResourceReady后,将图片资源resource保存到集合中。
这个时候,如果点击保存控件,则循环遍历图片资源集合保存到本地文件夹。
具体做法代码展示具体做法代码展示
这个时候直接将请求网络的图片转化成bitmap,然后存储到集合中。然后当点击保存按钮的时候,将会保存该组集合中的多张
图片到本地文件夹中。
//bitmap图片集合
private ArrayList<Bitmap> bitmapArrayList = new ArrayList<>();
RequestOptions requestOptions = new RequestOptions()
.transform(new GlideRoundTransform(mContext, radius, cornerType));
GlideApp.with(mIvImg.getContext())
.asBitmap()
.load(url)
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model,
Target<Bitmap> target, boolean isFirstResource) {
return true;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target,
DataSource dataSource, boolean isFirstResource) {
bitmapArrayList.add(resource);
return false;
}
})
.apply(requestOptions)
.placeholder(ImageUtils.getDefaultImage())
.into(mIvImg);
//循环遍历图片资源集合,然后开始保存图片到本地文件夹
mBitmap = bitmapArrayList.get(i);
savePath = FileSaveUtils.getLocalImgSavePath();
FileOutputStream fos = null;
try {
File filePic = new File(savePath);
if (!filePic.exists()) {
filePic.getParentFile().mkdirs();
filePic.createNewFile();
}
fos = new FileOutputStream(filePic);
// 100 图片品质为满
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//刷新相册
if (isScanner) {
评论0