HarmonyOS 鸿蒙Next:救助,PhotoViewPicker选择的照片,进行压缩后,如何把压缩后的照片上传给服务器
HarmonyOS 鸿蒙Next:救助,PhotoViewPicker选择的照片,进行压缩后,如何把压缩后的照片上传给服务器
需求描述:目前对PhotoViewPicker选择的照片已经完成压缩,但是不知道怎么处理这个压缩后的数据,尝试过用
其中的fileUrl是对应的PhotoViewPicker选择出来的照片保存到指定的沙箱目录的url
/data/storage/el2/base/haps/entry/cache/lala/b465f393-0f92-4e56-9d54-f2de6bbc174f.jpg
目的是想用压缩后的图片覆盖原图,然后把压缩后的图片上传给服务器。写入的时候也没有报错,感觉是写入成功了,但是貌似不生效,传给服务器的还是原图大小。
更多关于HarmonyOS 鸿蒙Next:救助,PhotoViewPicker选择的照片,进行压缩后,如何把压缩后的照片上传给服务器的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
希望有了解的大佬帮忙看看,核心代码如下:
更多关于HarmonyOS 鸿蒙Next:救助,PhotoViewPicker选择的照片,进行压缩后,如何把压缩后的照片上传给服务器的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
整个流程你已经实现了,问题是要根据代码排查:
1、压缩是否成功及存盘是否正确?保存到沙箱的文件可以在写入压缩图片后再读一次查看文件大小确认写入的是压缩结果;
2、上传数据是否是传递的压缩文件数据?这得看你的上传代码实现。
最后可能要注意整个流程中存在的异步操作实际执行次序问题,可添加日志打印系统时间来判定执行次序是否符合预期。
感谢您的回复,从打印的数据来看,压缩是成功了的,但是把压缩的数据写入原图片地址,再重新查看了图片大小,发现大小并不是压缩后的数据,不知道是哪里出了问题
dGuru大佬,我把核心代码发到评论里了,可以帮忙看看吗?若是有实现过,能否求一个例子学习,感恩🥹
没有现成例子,但可排查一下: 1、写入压缩数据后,关闭;重新打开文件用 fs.statSync(file.fd).size 读取文件大小,看是否和compressedImageData.byteLength 一致; 2、如果一致则压缩写入文件OK,那么 image2Data.byteLength 和 compressedImageData.byteLength 不同就是packing()解码处理的差异问题了,得看packing()的实现细节。 3、如果不一致则写入上有问题,看看是不是OpenMode要换一个;
在HarmonyOS中,使用PhotoViewPicker选择照片后,可通过编码压缩图片,并将压缩后的数据上传至服务器。首先,确保已对图片进行压缩处理,并获取到压缩后的ArrayBuffer或文件流。接着,利用网络请求库(如fetch或XMLHttpRequest)将压缩后的数据作为请求体发送到服务器。注意检查服务器的接收接口是否支持接收的图片格式及大小。如果问题依旧没法解决,请加我微信,我的微信是itying888。
更多关于HarmonyOS 鸿蒙Next:救助,PhotoViewPicker选择的照片,进行压缩后,如何把压缩后的照片上传给服务器的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html