Canvas.toDataURL not working on mobile Safari iOS?

通过canvas做图片压缩上传,用canvas.toDataURL将原图转换成base64传到服务器,在PC端浏览器可以正常运行,在android端浏览器也可以正常运行,就是在iPhone的safari上获取压缩过后的base64数据时,返回的是个“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真实图片的宽度
        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数据,是正常的,但在IOS系统的Safari中执行cvs.toDataURL(mime_type, quality/100)后返回的newImageData"data;",在Stack Overflow上看到有解答说是iPhone上Safari不支持toDataURL,如果要换其他插件之类的,项目改动比较大,是否真的没有解决方案?


守候你守候我
浏览 594回答 1
1回答

素胚勾勒不出你

几种可能性:图片文件 size 太大,是否图片超过了 3M ?图片的 dimension 太大,是否图片尺寸超过了 1000 x 1000 像素?你指定的 mime_type 不支持,你用的是哪个 mime type?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript