文档开发者中心
我的
|

HarmonyOS 5

救助,PhotoViewPicker选择的照片,进行压缩后,如何把压缩后的照片上传给服务器

需求描述:目前对PhotoViewPicker选择的照片已经完成压缩,但是不知道怎么处理这个压缩后的数据,尝试过用

cke_6111.png

其中的fileUrl是对应的PhotoViewPicker选择出来的照片保存到指定的沙箱目录的url
/data/storage/el2/base/haps/entry/cache/lala/b465f393-0f92-4e56-9d54-f2de6bbc174f.jpg
目的是想用压缩后的图片覆盖原图,然后把压缩后的图片上传给服务器。写入的时候也没有报错,感觉是写入成功了,但是貌似不生效,传给服务器的还是原图大小。

点赞
1
收藏
1
回复
6
分享
举报
浏览364 发布于2024-08-01 07:38上海
全部评论
最多点赞
最新发布
最早发布

希望有了解的大佬帮忙看看,核心代码如下:

cke_15120.png

2楼回复于2024-08-01 08:49 来自上海

整个流程你已经实现了,问题是要根据代码排查:

1、压缩是否成功及存盘是否正确?保存到沙箱的文件可以在写入压缩图片后再读一次查看文件大小确认写入的是压缩结果;

2、上传数据是否是传递的压缩文件数据?这得看你的上传代码实现。

最后可能要注意整个流程中存在的异步操作实际执行次序问题,可添加日志打印系统时间来判定执行次序是否符合预期。

4
1楼回复于2024-08-01 08:21 来自浙江
  • 188******99
    感谢您的回复,从打印的数据来看,压缩是成功了的,但是把压缩的数据写入原图片地址,再重新查看了图片大小,发现大小并不是压缩后的数据,不知道是哪里出了问题​​​​
    2024-08-01 08:47 来自上海
  • 188******99
    dGuru大佬,我把核心代码发到评论里了,可以帮忙看看吗?若是有实现过,能否求一个例子学习,感恩🥹
    2024-08-01 08:52 来自上海
  • dGuru回复188******99
    没有现成例子,但可排查一下: 1、写入压缩数据后,关闭;重新打开文件用 fs.statSync(file.fd).size 读取文件大小,看是否和compressedImageData.byteLength 一致; 2、如果一致则压缩写入文件OK,那么 image2Data.byteLength 和 compressedImageData.byteLength 不同就是packing()解码处理的差异问题了,得看packing()的实现细节。 3、如果不一致则写入上有问题,看看是不是OpenMode要换一个;
    2024-08-01 10:44 来自浙江
  • 展开剩余1条回复
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要提问题

了解社区公约,与您携手共创和谐专业的开发者社区。