600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 前端处理ios heic图片转jpg上传

前端处理ios heic图片转jpg上传

时间:2023-10-02 11:15:56

相关推荐

前端处理ios heic图片转jpg上传

背景:上传照片,期望支持ios的heic格式图片,服务端只接收jpg格式

环境

react、antd-mobile、heic2any、libheif-js

思路

使用heic2any讲图片在前端转换成jpg格式,并重新组装file发送给服务端

/*** 图片选中后 如果是heic图片 此处需要做下转换*/const onChange: any = (files: Array<any>, operationType: string, index: number) => {// 图片上传if (files.length) {// 单张图片let file = files[0].file;const fileName = file.name;if (fileName.toLowerCase().endsWith(`.heic`)) {Toast.loading('Loading...', 10, () => {});heic2any({blob: file,toType: "image/jpg",}).then((resultBlob: any) => {file = new File([resultBlob], fileName + ".jpg", {type: "image/jpeg",lastModified: new Date().getTime()});const reader: any = new FileReader();reader.onload = (e: ChangeEvent) => {// 转换base64files[0].url = (e.target as any).result;setFiles(files);Toast.hide();};// URL.createObjectURL(resultBlob);reader.readAsDataURL(file);// 用于预览 blob:http 使用FileReader对象和ImagePicker插件保持一致// files[0].url = URL.createObjectURL(resultBlob);// setFiles(files);}).catch(() => {Toast.hide();});} else {setFiles(files);}}// 图片清除else {setFiles(files);}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。