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

【报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

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

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容