Android Gilde获取网络图片显示保存路径并转化为bitmap

为某个按钮或者图片添加点击事件,然后:strImg为图片url地址 ,loadDialog只是个提示信息,可以不要这个参数。使用Glide的onResourceReady方法获取到bitmap对象:

LoadDialog loadDialog=new LoadDialog();
loadDialog.initShow(context,"图片保存中");
 public static void savePic(Context context, String strImg, LoadDialog loadDialog) {
        if (!ObjectUtils.isEmpty(strImg)) {
            //转化为位图
            Glide.with(context).asBitmap().load(strImg).listener(new RequestListener<Bitmap>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                    ToastUtils.showShort("图片加载失败,请使用手机截图");
                    loadDialog.dismiss();
                    return false;
                }

                @Override
                public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                    if (!ObjectUtils.isEmpty(resource)) {
                        try {
                            String string = Utils.getImgPath(context, resource, DateUtil.getCurrentTime("HHmmss"));
                            ToastUtils.showLong("图片保存位置:" + string);
                        } catch (Exception e) {
                            e.printStackTrace();
                            ToastUtils.showShort("图片保存失败,请使用手机截屏");
                        }
                    } else {
                        ToastUtils.showShort("图片获取失败,请使用手机截图");
                        Log.d("图片获取失败", "mBitmap == null");
                    }
                    loadDialog.dismiss();
                    return false;
                }
            }).submit();
        }else ToastUtils.showShort("图片获取失败,请用手机截图");
    }

保存图片并返回路径:

    public static String getImgPath(Context context, Bitmap bitmap, String picName) {
        String fileName = null;
        //保存文件路径
        String filePath = Environment.getExternalStorageDirectory().toString();
        //适配Android 10
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            filePath = Objects.requireNonNull(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)).toString();
        }
        //系统相册目录
        String galleryPath = (filePath
                + File.separator + Environment.DIRECTORY_DCIM
                + File.separator + "Camera" + File.separator);
        // 声明文件对象
        File file = null;
        // 声明输出流
        FileOutputStream outStream = null;
        try {
            // 如果有目标文件,直接获得文件对象,否则创建一个以filename为名称的文件
            file = new File(galleryPath, picName + ".jpg");
            // 获得文件相对路径
            fileName = file.toString();
            // 获得输出流,如果文件中有内容,追加内容
            outStream = new FileOutputStream(fileName);
            //图片压缩 质量为原来的90%,把压缩后的图片放到outStream
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
        } catch (FileNotFoundException e) {
            e.getStackTrace();
        } finally {
            if (outStream != null) {
                try {
                    outStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            MediaStore.Images.Media.insertImage(context.getContentResolver(),
                    bitmap, fileName, null);
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.DATA, galleryPath);
            values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
            Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
            // 通知图库更新
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath())));
        }
        return file.getPath();
    }

详细注释,放在代码里面了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
使用Glide获取Bitmap的方法有多种。引用中的代码展示了使用Glide的asBitmap()方法加载图片并将其转换为Bitmap的示例。首先,使用Glide的with方法指定上下文,然后使用asBitmap()方法加载图片并将其作为Bitmap返回。接下来,使用submit()方法来异步获取Bitmap,并将其赋值给一个FutureTarget对象。最后,通过调用get()方法来获取实际的Bitmap对象。 引用中的代码展示了使用Glide的asBitmap()方法加载图片并将其转换为Bitmap的另一种方法。在这个例子中,同样是使用with方法指定上下文和load方法加载图片,然后使用asBitmap()方法将其转换为Bitmap。接着,通过调用centerCrop()方法来对图片进行居中裁剪。最后,调用into方法将图片加载到ImageView中,并调用get()方法来获取实际的Bitmap对象。 引用中的代码展示了使用Glide的asBitmap()方法加载图片并将其转换为Bitmap的第三种方法。在这个例子中,同样是使用with方法指定上下文和load方法加载图片,然后使用asBitmap()方法将其转换为Bitmap。接着,调用centerCrop()方法来对图片进行裁剪,并调用into方法指定图片的目标大小。最后,通过调用get()方法来获取实际的Bitmap对象。 因此,根据你的需求,你可以根据这些示例代码中的方法选择合适的方式来使用Glide获取Bitmap123 #### 引用[.reference_title] - *1* *2* [Gilde获取Bitmap](https://blog.csdn.net/wl724120268/article/details/79552196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [Glide获取bitmap](https://blog.csdn.net/jhl122/article/details/52400376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&岁月不待人&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值