h5上传图片判断并转换heic格式
在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格式,则直接上传原始图片。
原文地址: https://www.cveoy.top/t/topic/D1K 著作权归作者所有。请勿转载和采集!