通過canvas做圖片壓縮上傳,用canvas.toDataURL將原圖轉(zhuǎn)換成base64傳到服務(wù)器,在PC端瀏覽器可以正常運(yùn)行,在android端瀏覽器也可以正常運(yùn)行,就是在iPhone的safari上獲取壓縮過后的base64數(shù)據(jù)時,返回的是個“data;”,也就是toDataURL沒有生效。var compress = function(source_img_obj, quality, output_format){ var mime_type = "image/jpeg";
if(output_format!=undefined && output_format=="png"){
mime_type = "image/png";
}
alert(source_img_obj); var cvs = document.createElement('canvas'); //naturalWidth真實(shí)圖片的寬度
cvs.width = source_img_obj.naturalWidth;
cvs.height = source_img_obj.naturalHeight; var ctx = cvs.getContext("2d").drawImage(source_img_obj, 0, 0);
var newImageData = cvs.toDataURL(mime_type, quality/100); var result_image_obj = new Image();
result_image_obj.src = newImageData; return result_image_obj;
}傳入的source_img_obj也是base64數(shù)據(jù),是正常的,但在IOS系統(tǒng)的Safari中執(zhí)行cvs.toDataURL(mime_type, quality/100)后返回的newImageData為"data;",在Stack Overflow上看到有解答說是iPhone上Safari不支持toDataURL,如果要換其他插件之類的,項目改動比較大,是否真的沒有解決方案?
Canvas.toDataURL not working on mobile Safari iOS?
守候你守候我
2018-10-12 14:19:18