如何使用Glide将图像保存到内部存储?

时间:2019-05-19 15:43:47

标签: android imageview android-glide

在我的应用中,我创建了一个图像滑块,并使用Glide将图像显示到imageview中。是否可以通过单击按钮将图像保存到内部存储中?

我一直在环顾四周,我认为我必须先将图像作为位图加载,然后将其保存到内部存储中,但是我想知道如何实现。

谢谢。

编辑:你们将我的问题识别为重复。我已经尝试过save pictures in device [Glide Library] ,但是不推荐使用SimpleTarget<Bitmap>

1 个答案:

答案 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);
}