丛林小子
丛林小子
  • 发布:2020-08-20 15:30
  • 更新:2022-04-19 17:07
  • 阅读:2924

调用uni.chooseImage从相册选择图片后,本地相册图片会被自动删除

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 2.8.7

手机系统: 全部

手机厂商: 华为

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

oppo、华为、小米

操作步骤:

app调用uni.chooseImage从本地相册选择图片,相册的图片会被自动删除,时而出现,不是每次都会重现。

预期结果:

请修复bug

实际结果:

快快快

bug描述:

app调用uni.chooseImage从本地相册选择图片,相册的图片会被自动删除,时而出现,不是每次都会重现。

2020-08-20 15:30 负责人:DCloud_uniCloud_JSON 分享
已邀请:

最佳回复

DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

如果是因为上传图片压缩使用了plus.zip.compressImage且dst和src相等,压缩的图片和原图会相互覆盖即为先删除重名文件,此时华为会报“删除了图片”。
优化方式:改plus.zip.compressImage为uni.compressImage即可,内部逻辑已经将dst设置为沙盒环境。

DCloud_uniAD_HDX

DCloud_uniAD_HDX

是否调用了删除相关API

  • 2***@qq.com

    有删除相册照片的api吗?

    2022-04-19 17:09

DCloud_App_Array

DCloud_App_Array

从相册选择图片只是返回图片路径,并不会删除图片。确认有没有调用其它API对图片进行操作?有没有使用uni原生插件?
写一个简单的示例应用,只调用uni.chooseImage看是否可以出现这种现象。

  • 风云杭州

    关键貌似它不是特别有规律

    2020-10-25 15:33

g***@tocs.cn

g***@tocs.cn - shonve

我也遇到这个问题,楼主解决了吗

风云杭州

风云杭州

我也遇到这个问题,部分华为手机和oppo手机的用户有反馈这个问题。

在选择图片的时候,我还做了压缩处理

  • g***@tocs.cn

    是的,我这边是华为手机用户反馈了,自己压根没调用任何删除的api

    2020-10-25 15:26

  • snoop

    24年了 同样遇到这个问题,你们最后是怎么处理的

    2024-04-01 09:44

xiaoliao998

xiaoliao998 - null

同是此问题,貌似是这个方法。压缩时,貌似必须选择overwrite 为true,否则就不行

    plus.zip.compressImage({  
                                    src: item.src,  
                                    dst: item.src,  
                                    width: '70%',  
                                    height: '70%',  
                                    quality: 80,  
                                    overwrite: true  
                                }
  • 风云杭州

    dst 必须放到应用沙盒目录,不能是原来的目录

    2020-11-16 20:14

  • xiaoliao998

    回复 风云杭州: 朋友 能写个具体的示例吗, let dst = '_doc/' + file.name 这样写了后,好像还是有点问题

    2020-11-16 21:12

  • 风云杭州

    回复 xiaoliao998: tempFilePaths.forEach((item) =>{

    console.log("oldpath:"+item);

    let imagename=Date.now();

    let dst="_doc/"+imagename+".jpg";

    console.log("dst:"+dst);

    plus.zip.compressImage({

    src:item,

    dst:dst,

    overwrite:true,

    quality:50,

    width:'1080px',

    height:'auto',

    format:'jpg',

    },

    (res) =>{

    //console.log("newimage size:"+res.size);

    console.log("newpath:"+res.target);

    this.imageList.push(res.target);

    //console.log("imagelist0:"+this.imageList[0]);

    //console.log("newheight:"+res.height);

    }

    );

    this.sleep(100);

    });

    2020-11-16 21:14

  • 风云杭州

    回复 xiaoliao998: file.name 是获取图片的文件名吗? 我采用的是按毫秒生成一个名字。但有个问题,如果一次性选择多张图片,会出现重复,所以我在循环里加了一个定时器

    2020-11-16 21:16

  • xiaoliao998

    回复 风云杭州: 多谢,方法可行

    2020-11-16 21:39

  • DCloud_UNI_GSQ

    你们为什么直接使用plus.zip.compressImage而不是使用uni.compressImage?是为了设置大小吗?

    2020-11-17 10:22

  • xiaoliao998

    回复 DCloud_UNI_GSQ: 这方法 可以控制宽高

    2020-11-18 16:31

  • DCloud_UNI_GSQ

    回复 xiaoliao998: OK

    2020-11-18 17:30

  • 风云杭州

    回复 DCloud_UNI_GSQ: 感觉 uni.compressImage 价值不大。因为减少宽高是最能起到压缩效果的,其次才是quality..而uni.compressImage 并不能选择改变宽高,貌似也不能选择生成的压缩的图片的目录。

    2020-11-19 11:02

  • DCloud_UNI_GSQ

    回复 风云杭州: App端后续版本将支持宽高配置

    2020-11-19 11:15

2***@qq.com

2***@qq.com

uni.chooseImage拍照后,照片不保存到相册或者保存后,将相册的照片删掉,怎么实现?

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