9***@qq.com
9***@qq.com
  • 发布:2019-09-27 22:00
  • 更新:2020-02-21 01:39
  • 阅读:2064

【报Bug】IOS13canvas无法使用

分类:MUI

canvas.toDataURL("image/png", 0.8)
直接崩溃。。。在ios13出的新问题

2019-09-27 22:00 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com (作者)

并不是ios13出现的问题。。。新版的hbuilderx都无法使用

9***@qq.com

9***@qq.com (作者)

var canvas = document.createElement("canvas");
var width = img.width;
var height = img.height;
// calculate the width and height, constraining the proportions
if(width > height) {
if(width > 100) {
height = Math.round(height = 100 / width);
width = 100;
}
} else {
if(height > 100) {
width = Math.round(width
= 100 / height);
height = 100;
}
}
canvas.width = width; /设置新的图片的宽度/
canvas.height = height; /设置新的图片的长度/

var ctx = canvas.getContext("2d");  
ctx.drawImage(img, 0, 0, width, height); /*绘图*/  
console.log("3")  
var dataURL = canvas.toDataURL("image/png", 0.8);  
console.log("4")  
console.log(dataURL)  
return dataURL.replace("data:image/png;base64,", "");  

打印到3,到了todataurl就直接崩了。。。

9***@qq.com

9***@qq.com (作者)

结贴。。

ios注意使用UIWebview内核,WKWebview 会出现问题

1***@qq.com

1***@qq.com

周五发现的这个问题,今天也确认了是新版hbuilderx的问题呢

邱水仙

邱水仙

toDataURL在安卓上是没这个跨域问题的,ios上确实有问题,不过即便没有这个bug,实际中也不可能使用这个策略啊,速度太慢了,建议你还是使用webview的draw方法吧,原生的速度还是快很多的,在安卓上尤为明显

  • 9***@qq.com (作者)

    现在在用todataurl,,,,drwa这个有相关资料麻烦能发下吗。。。没有用过,谢谢

    2019-09-29 16:00

邱水仙

邱水仙

把你要转换的页面写在canvas webview里,然后利用draw就可以得到这个webview截图图片的base64,接下来你就可以上传或者再次利用bitmap.save方法保存为图片了

var wi = plus.webview.getWebviewById('canvas');  
   var bitmap = new plus.nativeObj.Bitmap("test");  
   wi.draw(bitmap, function(){  
    var base64Date=bitmap.toBase64Data();  
  });
  • 9***@qq.com (作者)

    但是这样就不能压缩图片了吧,我还要利用canvas压缩图片大小

    2019-09-29 16:36

  • 邱水仙

    回复 9***@qq.com: 这个截图保存出来的图片本身就是经过原生程序压缩过了的,如果你只是单纯的想压缩图片,直接用原生的压缩方法不是更简单

    2019-09-29 16:48

  • 9***@qq.com (作者)

    回复 邱水仙: 我现在是用canvas压缩图片之后转换base64,还没有用过drwa,我用下试试,谢谢

    2019-09-29 18:43

  • 1***@163.com

    回复 9***@qq.com: 你好,我想问一下这个问题您后来怎么解决的

    2020-06-05 16:16

守护

守护

mark ,5+app 使用,var base64 = canvas.toDataURL("image/jpeg", 1.0);就炸了

DCloud_heavensoft

DCloud_heavensoft

因iOS13起UIWebview被列为非公开API,未来会被App Store拒绝。从HBuilderX 2.3.0+起,iOS App的默认webview从UIwebview改为了WKWebview。WKWebview与UIWebview有部分区别,包括更严格的联网或canvas跨域限制,详见:https://ask.dcloud.net.cn/article/36348

  • 守护

    5+app 不能使用https://ext.dcloud.net.cn/plugin?id=123这个插件,如何改写canvas.toDataURL方法?

    plus的哪个接口可以将canvas图像转换为base64?

    2020-02-21 07:39

该问题目前已经被锁定, 无法添加新回复