Как сохранить изображение на внутреннем хранилище с Glide? - PullRequest
0 голосов
/ 19 мая 2019

В своем приложении я создал слайдер изображений и отображаю изображения с помощью Glide в режиме просмотра изображений.Есть ли способ сохранить изображения по нажатию кнопки во внутреннем хранилище?

Я осматривался и думаю, что сначала мне нужно загрузить изображение в виде растрового изображения, а затем сохранить его во внутреннем хранилище, но мне интересно, как это сделать?добиться этого.

Заранее спасибо.

РЕДАКТИРОВАТЬ: вы, ребята, идентифицируете мой вопрос как дубликат.Я уже пытался сохранить изображения в устройстве [Glide Library] , но SimpleTarget<Bitmap> устарело.

1 Ответ

0 голосов
/ 20 мая 2019

Поскольку 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);
}
...