在h5上传图片时,可以通过判断图片的格式来进行转换。在iOS 11及以上版本中,苹果开始使用HEIC格式来替代JPEG格式作为默认的图片格式,这种格式在体积和画质方面都有优势,但是不兼容所有设备和软件,因此需要转换。

以下是一个示例代码:

function convertToJPEG(file) {
  // 判断图片格式是否为HEIC
  if (file.type === 'image/heic') {
    // 创建一个canvas对象
    var canvas = document.createElement('canvas');
    // 创建一个image对象
    var img = document.createElement('img');
    // 读取图片数据
    var reader = new FileReader();
    reader.onload = function(event) {
      // 将图片数据加载到image对象中
      img.src = event.target.result;
      // 将图片绘制到canvas中
      img.onload = function() {
        canvas.width = img.width;
        canvas.height = img.height;
        var ctx = canvas.getContext('2d');
        ctx.drawImage(img, 0, 0, img.width, img.height);
        // 将canvas转换为JPEG格式的图片
        canvas.toBlob(function(blob) {
          var newFile = new File([blob], file.name.replace('.heic', '.jpg'), {type: 'image/jpeg'});
          // 上传转换后的图片
          upload(newFile);
        }, 'image/jpeg', 0.8);
      };
    };
    reader.readAsDataURL(file);
  } else {
    // 不是HEIC格式,直接上传
    upload(file);
  }
}

function upload(file) {
  // 上传图片
  // ...
}

在上面的代码中,首先判断图片格式是否为HEIC,如果是,则使用canvas将其转换为JPEG格式的图片,并将转换后的图片上传;如果不是HEIC格式,则直接上传原始图片。

h5上传图片判断并转换heic格式

原文地址: https://www.cveoy.top/t/topic/D1K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录