Android 应用开发学习-将ImageView中的图像保存到手机公共储存空间

前言

之前,我尝试了用华为统一扫码服务生成二维码,照着官网上的资料很顺利就完成了,接着就是要实现将ImageView中的二维码保存为图像文件,存放在手机的公共存储空间内,以便发送给他人。

一、实现中出现的问题

我先是参照欧阳燊先生编著的《Android App开发入门与项目实战》第6章的相关内容编写代码,在手机上测试后发现虽然在目标文件夹下生成了图片文件,但文件的大小是0KB。意味着图片文件里没有内容。

二、解决问题的方法

我在优快云社区里搜索,找到了一篇相关的博文,看过之后才发现问题所在。

文章链接

Android开发:用getDrawingCache方法获取ImageView中的图像需要注意的问题_安卓获取imageview图像边缘-优快云博客

我的代码运行时出现问题就是少了下面的两行代码

setDrawingCacheEnabled(true);

setDrawingCacheEnabled(false);

在使用getDrawingCache()方法的代码前后分别添加上面的两个方法,再进行测试,问题就解决了。

三、Java代码

我的代码如下:

            // 从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法
            iv_code1.setDrawingCacheEnabled(true);
            if (iv_code1.getDrawable() == null) {  // 检查是否已生成二维码
                Toast.makeText(this, "还未生成二维码", Toast.LENGTH_SHORT).show();
                return;
            }
            Bitmap bitmap = Bitmap.createBitmap(iv_code1.getDrawingCache());
            // 从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法
            iv_code1.setDrawingCacheEnabled(false);
            // 设置图像的保存路径
            // 保存路径在公共存储空间的 /Documents/bahamutjapp/ 文件夹下
            File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "bahamutjapp");
            if (!file.exists()) {
                boolean success = file.mkdirs();
                if (success) {
                    Log.d(TAG, "文件夹创建成功");
                } else {
                    Log.e(TAG, "文件夹已存在");
                }
            }
            String fileName = "QR" + DateUtil.getNowDateTime() + ".jpeg";
            String filePath = file + File.separator + fileName;
            FileUtil.saveImage(filePath, bitmap);
            Log.d(TAG, "二维码图片路径为:" + filePath);  // 完整的路径
            // 在TextView中显示的路径是通过手机的文件管理app看到的路径
            tv_filePath.setText("图片路径:/Documents/bahamutjapp/" + fileName);
            Toast.makeText(this, "二维码图片已生成", Toast.LENGTH_SHORT).show();
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

武陵悭臾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值