a***@qq.com
a***@qq.com
  • 发布:2021-08-20 11:21
  • 更新:2022-03-10 13:23
  • 阅读:2227

【报Bug】uni.chooseImage(OBJECT),这个api 设置sizeType: ['compressed'],不会进行压缩了,而是原图!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win10

HBuilderX类型: 正式

HBuilderX版本号: 3.2.2

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: 小米8

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
                uni.chooseImage({  
                    count: 1, //默认9  
                    sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有  
                    sourceType: ['camera'], //从相机选择  
                    // crop: { //图像裁剪参数,设置后 sizeType 失效  
                    //  quality: 80,  
                    //  width: 100,  
                    //  height: 100,  
                    //  resize: true//是否将width和height作为裁剪保存图片真实的像素值。  
                    // },  
                    success: function(res) {  
                        _this.source = res.tempFilePaths[0];  
                        //转换成base64  
                        pathToBase64(_this.source)  
                            .then(base64 => {  
                                /* 用于向父组件传递事件,可携带子组件的参数*/  
                                _this.$emit('getSrc', base64);  
                            })  
                            .catch(error => {  
                                _this.$u.utils.showToast('图片上传失败,请重新拍摄,error:' + error);  
                            });  
                    }  
                });

操作步骤:
                uni.chooseImage({  
                    count: 1, //默认9  
                    sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有  
                    sourceType: ['camera'], //从相机选择  
                    // crop: { //图像裁剪参数,设置后 sizeType 失效  
                    //  quality: 80,  
                    //  width: 100,  
                    //  height: 100,  
                    //  resize: true//是否将width和height作为裁剪保存图片真实的像素值。  
                    // },  
                    success: function(res) {  
                        _this.source = res.tempFilePaths[0];  
                        //转换成base64  
                        pathToBase64(_this.source)  
                            .then(base64 => {  
                                /* 用于向父组件传递事件,可携带子组件的参数*/  
                                _this.$emit('getSrc', base64);  
                            })  
                            .catch(error => {  
                                _this.$u.utils.showToast('图片上传失败,请重新拍摄,error:' + error);  
                            });  
                    }  
                });

用这个代码,使用两个版本,是不同的结果,图片大小是不同的

预期结果:

新版本的没有压缩了!

实际结果:

实际上是原图!

bug描述:

uni.chooseImage(OBJECT),这个api 设置sizeType: ['compressed'],不会进行压缩了!
在上个版本3.1.22.20210709中,设置compressed还是会压缩的,现在不行了!

                uni.chooseImage({  
                    count: 1, //默认9  
                    sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有  
                    sourceType: ['camera'], //从相机选择  
                    // crop: { //图像裁剪参数,设置后 sizeType 失效  
                    //  quality: 80,  
                    //  width: 100,  
                    //  height: 100,  
                    //  resize: true//是否将width和height作为裁剪保存图片真实的像素值。  
                    // },  
                    success: function(res) {  
                        _this.source = res.tempFilePaths[0];  
                        //转换成base64  
                        pathToBase64(_this.source)  
                            .then(base64 => {  
                                /* 用于向父组件传递事件,可携带子组件的参数*/  
                                _this.$emit('getSrc', base64);  
                            })  
                            .catch(error => {  
                                _this.$u.utils.showToast('图片上传失败,请重新拍摄,error:' + error);  
                            });  
                    }  
                });
2021-08-20 11:21 负责人:DCloud_UNI_LXH 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

是所有图均未压缩,还是小图未压缩?

  • 瑞芝康健

    同样遇到了,之前版本没问题,现在版本拍照的时候压缩功能无效

    2021-08-31 10:46

  • DCloud_UNI_GSQ

    回复 r***@163.com: 你说的拍照吗?

    2021-08-31 11:19

  • 瑞芝康健

    回复 DCloud_UNI_GSQ: 是的,选择拍照的时候,图片是没有压缩的

    2021-08-31 11:23

  • 瑞芝康健

    回复 DCloud_UNI_GSQ: 3.2.2.20210818版本出现的问题,我尝试更新到3.2.3.20210825这个问题还是没有解决。

    2021-08-31 11:42

2***@qq.com

2***@qq.com

遇到同样的情况。版本:3.2.2.20210818,IOS下,相册里的图片从2.4M压缩的到400多K,但是用拍照功能的时候,不管original还是compressed,都是2.5M左右。

uni.chooseImage({  
                count: 1,  
                sourceType: ['camera'], //拍摄:album 从相册选图,camera 使用相机  
                sizeType: ['compressed'],   //压缩:original 原图,compressed 压缩图  
                success: (res) => {  

                    const tempFilePaths = res.tempFilePaths;  
                    console.log(res.tempFiles);  
                    pathToBase64(tempFilePaths[0])  
                        .then(base64 => {  
                            let str = base64.substring(base64.indexOf(',') + 1)

下面是控制台打印出来的图片信息

18:20:01.651  [Object] [{"path":"_doc/uniapp_temp_1630316858921/camera/photo_001.jpg","size":2761151}]  at pages/index/index.js:701   
18:28:43.413  [Object] [{"path":"_doc/uniapp_temp_1630316858921/camera/photo_002.jpg","size":3204955}]  at pages/index/index.js:701 
2***@qq.com

2***@qq.com

经过测试,小米4C也是同样的情况。从相册选图片可以压缩,拍照的不压缩

瑞芝康健

瑞芝康健

同样遇到了,之前版本没问题,现在版本拍照的时候压缩功能无效

DCloud_UNI_GSQ

DCloud_UNI_GSQ

HBuilderX 3.2.6 alpha 已修复

g***@sina.com

g***@sina.com

HBuilderX 3.3.11,小米note9,微信小程序,微信开发者工具1.05,选择相册图片,发现根本没压缩,4.79M的jpg文件

  • DCloud_UNI_GSQ

    微信小程序平台的话,需要反馈到微信小程序社区。

    2022-03-14 18:01

  • z***@163.com

    那可以使用crop来代替compressed吗

    2022-05-09 22:32

该问题目前已经被锁定, 无法添加新回复