赞
踩
问题:
heic图片在微信小程序端不能回显也不能上传成功。
Heic格式是苹果专门为iOS11开发的照片格式。Heic是苹果iOS和macOS的一种文件格式,用于处理图像和视频。Heic是H.264和JEP格式,取代了IOS 11系统中的原始视频和照片。Heic格式不仅可以节省内存,还可以保留原始图像质量。Heic格式是苹果iOS和iOS的特殊格式。
heic的特点:与JPG相比,heic格式占用空间更少,图像质量更无损。HEIC格式照片支持iOS11和macOS High Sierra(10.13)及更高版本。但是这种格式不能用图片查看软件直接在Windows中打开(Windows10 RS4开始支持这种格式)。
heic的图片在微信小程序下,经过压缩,可以转换为jpeg,展示
- wx.compressImage({
- src: path, // 图片路径
- quality: 50, // 压缩质量
- success: (res) => {
- console.log(res, 'ressss')
- },
- fail: (err) => {
- console.log(err)
- }
- })
注意:压缩图片在微信小程序可以回显页面,但是继续上传后端,依旧会失败
终极解决方案是后端进行转换。暂时没有找到前端能直接转换的方案,如果有,欢迎讨论
(下面是为了上传heic图片成功,所以用本地node端测试了一下转换图片,在回传给前端,在重新上传给真正的后端转换的图片上传成功的案例)
(1)微信小程序端
- //选择图片
- wx.chooseMedia({
- count: 1,
- mediaType: 'image',
- success: (r) => {
- //上传给node服务器进行转换
- wx.uploadFile({
- url: 'http://localhost:7001/uploadImg/api/heictoany',
- filePath:r.tempFiles[0].tempFilePath,
- name: 'file',
- success: (res) => {
- let src = 'http://localhost:7001/MKIntouch/' ++JSON.parse(res.data).src
- //拿到地址重新下载图片
- wx.downloadFile({
- url: src,
- success (tempR) {
- if (tempR.statusCode === 200) {
- //重新生成本地临时路径(用这个路径在去上传给后端可上传heic成功,也可以回显)
- console.log(tempR.tempFilePath)
- }
- }
- })
- }
- })
-
- }
(2)node端转换heic
主要使用插件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。