通过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
,如果要换其他插件之类的,项目改动比较大,是否真的没有解决方案?
素胚勾勒不出你
相关分类