Glide加载图片并保存到本地返回file,bitmap

    xiaoxiao2021-12-14  13

    不废话,直接上代码

    [java] view plain copy print ? import android.content.Context;  import android.content.Intent;  import android.graphics.Bitmap;  import android.net.Uri;    import com.baguanv.jinba.utils.Const;  import com.bumptech.glide.Glide;  import com.bumptech.glide.request.target.Target;    import java.io.File;  import java.io.FileNotFoundException;  import java.io.FileOutputStream;  import java.io.IOException;    /**  * 图片下载  *   */  public class DownLoadImageService implements Runnable {      private String url;      private Context context;      private ImageDownLoadCallBack callBack;      private File currentFile;      public DownLoadImageService(Context context, String url, ImageDownLoadCallBack callBack) {          this.url = url;          this.callBack = callBack;          this.context = context;      }        @Override      public void run() {          File file = null;          Bitmap bitmap = null;          try {  //            file = Glide.with(context)  //                    .load(url)  //                    .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)  //                    .get();              bitmap = Glide.with(context)                      .load(url)                      .asBitmap()                      .into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)                      .get();              if (bitmap != null){                  // 在这里执行图片保存方法                  saveImageToGallery(context,bitmap);              }          } catch (Exception e) {              e.printStackTrace();          } finally {  //            if (file != null) {  //                callBack.onDownLoadSuccess(file);  //            } else {  //                callBack.onDownLoadFailed();  //            }              if (bitmap != null && currentFile.exists()) {                  callBack.onDownLoadSuccess(bitmap);              } else {                  callBack.onDownLoadFailed();              }          }      }        public void saveImageToGallery(Context context, Bitmap bmp) {          // 首先保存图片          String File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsoluteFile();//注意小米手机必须这样获得public绝对路径          String fileName = ”新建文件夹”;         File appDir = new File(file ,fileName);          if (!appDir.exists()) {              appDir.mkdirs();          }          String fileName = System.currentTimeMillis() + ”.jpg”;          currentFile = new File(appDir, fileName);            FileOutputStream fos = null;          try {              fos = new FileOutputStream(currentFile);              bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);              fos.flush();          } catch (FileNotFoundException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          } finally {              try {                  if (fos != null) {                      fos.close();                  }              } catch (IOException e) {                  e.printStackTrace();              }          }            // 其次把文件插入到系统图库  //        try {  //            MediaStore.Images.Media.insertImage(context.getContentResolver(),  //                    currentFile.getAbsolutePath(), fileName, null);  //        } catch (FileNotFoundException e) {  //            e.printStackTrace();  //        }            // 最后通知图库更新          context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,                  Uri.fromFile(new File(currentFile.getPath()))));      }  }   import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import com.baguanv.jinba.utils.Const; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.Target; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * 图片下载 * */ public class DownLoadImageService implements Runnable { private String url; private Context context; private ImageDownLoadCallBack callBack; private File currentFile; public DownLoadImageService(Context context, String url, ImageDownLoadCallBack callBack) { this.url = url; this.callBack = callBack; this.context = context; } @Override public void run() { File file = null; Bitmap bitmap = null; try { // file = Glide.with(context) // .load(url) // .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) // .get(); bitmap = Glide.with(context) .load(url) .asBitmap() .into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .get(); if (bitmap != null){ // 在这里执行图片保存方法 saveImageToGallery(context,bitmap); } } catch (Exception e) { e.printStackTrace(); } finally { // if (file != null) { // callBack.onDownLoadSuccess(file); // } else { // callBack.onDownLoadFailed(); // } if (bitmap != null && currentFile.exists()) { callBack.onDownLoadSuccess(bitmap); } else { callBack.onDownLoadFailed(); } } } public void saveImageToGallery(Context context, Bitmap bmp) { // 首先保存图片 String File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsoluteFile();//注意小米手机必须这样获得public绝对路径 String fileName = "新建文件夹";  File appDir = new File(file ,fileName); if (!appDir.exists()) { appDir.mkdirs(); } String fileName = System.currentTimeMillis() + ".jpg"; currentFile = new File(appDir, fileName); FileOutputStream fos = null; try { fos = new FileOutputStream(currentFile); bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } // 其次把文件插入到系统图库 // try { // MediaStore.Images.Media.insertImage(context.getContentResolver(), // currentFile.getAbsolutePath(), fileName, null); // } catch (FileNotFoundException e) { // e.printStackTrace(); // } // 最后通知图库更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(currentFile.getPath())))); } }

    [java] view plain copy print ? public interface ImageDownLoadCallBack {      void onDownLoadSuccess(File file);      void onDownLoadSuccess(Bitmap bitmap);        void onDownLoadFailed();  }   public interface ImageDownLoadCallBack { void onDownLoadSuccess(File file); void onDownLoadSuccess(Bitmap bitmap); void onDownLoadFailed(); } [java] view plain copy print ? /**      * 启动图片下载线程      */      private void onDownLoad(String url) {          DownLoadImageService service = new DownLoadImageService(getApplicationContext(),                  url,                  new ImageDownLoadCallBack() {                        @Override                      public void onDownLoadSuccess(File file) {                      }                      @Override                      public void onDownLoadSuccess(Bitmap bitmap) {                          // 在这里执行图片保存方法                          Message message = new Message();                          message.what = MSG_VISIBLE;                          handler.sendMessageDelayed(message, delayTime);                      }                        @Override                      public void onDownLoadFailed() {                          // 图片保存失败                          Message message = new Message();                          message.what = MSG_ERROR;                          handler.sendMessageDelayed(message, delayTime);                      }                  });          //启动图片下载线程          new Thread(service).start();      }   /** * 启动图片下载线程 */ private void onDownLoad(String url) { DownLoadImageService service = new DownLoadImageService(getApplicationContext(), url, new ImageDownLoadCallBack() { @Override public void onDownLoadSuccess(File file) { } @Override public void onDownLoadSuccess(Bitmap bitmap) { // 在这里执行图片保存方法 Message message = new Message(); message.what = MSG_VISIBLE; handler.sendMessageDelayed(message, delayTime); } @Override public void onDownLoadFailed() { // 图片保存失败 Message message = new Message(); message.what = MSG_ERROR; handler.sendMessageDelayed(message, delayTime); } }); //启动图片下载线程 new Thread(service).start(); }

    转载请注明原文地址: https://ju.6miu.com/read-968090.html

    最新回复(0)