在我的应用中,我创建了一个图像滑块,并使用Glide将图像显示到imageview中。是否可以通过单击按钮将图像保存到内部存储中?
我一直在环顾四周,我认为我必须先将图像作为位图加载,然后将其保存到内部存储中,但是我想知道如何实现。
谢谢。
编辑:你们将我的问题识别为重复。我已经尝试过save pictures in device [Glide Library] ,但是不推荐使用SimpleTarget<Bitmap>
。
答案 0 :(得分:0)
不推荐使用SimpleTarget。您可以按照以下示例获取位图。
try{
Glide.with(mContext)
.asBitmap().load(live_marker_img)
.apply(new RequestOptions()
.override(150,150)
.diskCacheStrategy(DiskCacheStrategy.ALL))
.listener(new RequestListener<Bitmap>(){
@Override
public boolean onLoadFailed(@Nullable GlideException e,Object
o,Target<Bitmap> target,boolean b){
return false;
}
@Override
public boolean onResourceReady(Bitmap bitmap,Object o,Target<Bitmap>
target,DataSource dataSource,boolean b){
Bitmap bitmap=resource; // you will get bitmap here
saveImage(bitmap); // save your bitmap
return false;
}
}
).submit();
}catch(Exception e){
e.printStackTrace();
}
然后保存位图的方法是-
private String saveImage(Bitmap image) {
String savedImagePath = null;
String imageFileName = "JPEG_" + "FILE_NAME" + ".jpg";
File storageDir = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ "/YOUR_FOLDER_NAME");
boolean success = true;
if (!storageDir.exists()) {
success = storageDir.mkdirs();
}
if (success) {
File imageFile = new File(storageDir, imageFileName);
savedImagePath = imageFile.getAbsolutePath();
try {
OutputStream fOut = new FileOutputStream(imageFile);
image.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}
// Add the image to the system gallery
galleryAddPic(savedImagePath);
Toast.makeText(mContext, "IMAGE SAVED", Toast.LENGTH_LONG).show();
}
return savedImagePath;
}
private void galleryAddPic(String imagePath) {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(imagePath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
sendBroadcast(mediaScanIntent);
}