当前位置: 首页 > news >正文

前端上传heic图片转jpe格式并展示

  • 各大浏览器对 HEIC 格式图片的支持情况,包括上传和显示的支持度
浏览器版本HEIC 上传HEIC 显示
Chrome版本 85 及以上支持不支持
Firefox所有版本支持不支持
Safari版本 11 及以上支持支持
Edge版本 18 及以上支持不支持
Opera所有版本支持不支持
IE不支持不支持不支持
  • 安装
npm install heic2any
  • 封装的方法
// 上传至阿里服务器
import heic2any from 'heic2any';
const uploadFile1 = function(file, fileImport) {const hide = Message({iconClass: "el-icon-loading",duration: 0,dangerouslyUseHTMLString: true,message: '<span style="margin-left:10px">上传中...</span>'});return new Promise((resolve, reject) => {let env = storage.get('env') || null;if (!env || !env.expiration || new Date().getTime() >= env.expiration) {request(aliyunUrl, 'get', {}).then(res => {const { accessKeyId, accessKeySecret, securityToken, expiration } = res.data.data;env = {region: 'oss-cn-hangzhou',accessKeyId: accessKeyId,accessKeySecret: accessKeySecret,stsToken: securityToken,expiration: expiration,//过期时间bucket: ossUrl, //文件名称secure: true,};storage.set('env', env)uploadFile2(file, fileImport, hide).then(res => {resolve(res)})})} else {uploadFile2(file, fileImport, hide).then(res => {resolve(res)})}})
};
const uploadFile2 = async function(file, fileImport, hide) {// 检测heic格式图片 转换成jpg格式再上传至服务器if (file && file.type === 'image/heic') {try {const blob = await heic2any({blob: file,toType: 'image/jpeg',});file = new File([blob], `${file.name.split('.')[0] || 'image'}.jpg`, { type: 'image/jpeg' })} catch (e) {Message.error("上传失败!");}}let env = storage.get('env') || null;var client = new OSS.Wrapper(env)let type = file.name.substring(file.name.lastIndexOf('.')).toLowerCase()let storeAs = '',time = new Date().getTime()let fileName = file.name.substring(0, file.name.lastIndexOf('.'))var reg = new RegExp(',', 'g')fileName = fileName.replace(reg, '')if (fileImport) {//文件导入账户特殊处理storeAs = `sasspc/upload/${Math.floor(Math.random() * 150)}_${time}${type}`} else {storeAs = `sasspc/upload/${Math.floor(Math.random() * 150)}_${time}${type}`}return new Promise((resolve, reject) => {client.multipartUpload(storeAs, file).then((res) => {let fileUrl = 'https://' + ossUrl + res.namelet params = {};params.url = fileUrlparams.name = file.name;resolve(params)return}).catch((err) => {Message.error("上传失败!");reject();return}).finally(() => {hide.close()})});
};
http://www.lryc.cn/news/353796.html

相关文章:

  • VMware虚拟机-设置系统网络IP、快照、克隆
  • 指纹识别概念解析
  • 图像处理神经网络数据预处理步骤的详细解释和分析
  • 音视频开发4-补充 FFmpeg 开发环境搭建 -- 在windows 上重新build ffmpeg
  • 第十二周笔记
  • SketchUp v2024 v24.0.553 解锁版安装教程 (强大的绘图三维建模工具)
  • 力扣题解记录
  • Flutter 中的 ExpandIcon 小部件:全面指南
  • 想转行程序员的朋友,有什么想问的在评论区随便问,我知道的都告诉你。
  • Jenkins工具系列 —— 通过钉钉API 发送消息
  • MySQL--存储引擎
  • 【经典文献】光-声立体成像:关于系统标定与三维目标重建
  • 弘君资本股市行情:股指预计保持震荡上扬格局 关注汽车、银行等板块
  • 看这两位东北圣女美吗?如何描写美女的大长腿?
  • Linux相关指令
  • 自建公式,VBA在Excel中解一元一次方程
  • Linux-之 简易:Shell编程
  • vue3的api风格
  • MySQL 开源到商业(五):开源 vs 养家糊口
  • 进程信号(1)
  • Pytorch入门(7)—— 梯度累加(Gradient Accumulation)
  • day12
  • MySQL技术点合集
  • 记录使用 Vue3 过程中的一些技术点
  • 6. C++通过fork的方式实现高性能网络服务器
  • 直播美颜插件、美颜SDK详解:技术、功能与实现原理
  • MyBatis入门(1)
  • 打开服务器远程桌面连接不上,可能的原因及相应的解决策略
  • 用于时间序列概率预测的蒙特卡洛模拟
  • VScode解决报错“Remote-SSH XHR failed无法访问远程服务器“的方案