首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webgl画布的toDataURL()仅在iOS中返回透明图像

webgl画布的toDataURL()仅在iOS中返回透明图像
EN

Stack Overflow用户
提问于 2017-10-30 14:44:41
回答 2查看 2.2K关注 0票数 7

我有一个画布与webGL绘图,由Blend4Web框架创建。

我尝试使用toDataURL()保存图像

代码语言:javascript
复制
image= $('canvas')[0].toDataURL();

除了iOS (iphone和ipad),所有的平台都运行得很完美。

我知道webGL方面:Canvas toDataURL() returns blank image only in FirefoxpreserveDrawingBuffer是启用的。

此外,我知道iOS:iOS HTML5 Canvas toDataURL的限制,但画布很小,即使是100×500px的图像也是空白的(它是0.05MP,限制是3MP)。

我使用toDataURL()在服务器上发送图形信息。

EN

回答 2

Stack Overflow用户

发布于 2017-11-07 10:19:27

以下是toDataURL的多边形填充。为了让toBlob在iOS上工作,你需要一个额外的polyfill,我推荐下面的polyfill:https://github.com/blueimp/JavaScript-Canvas-to-Blob。基本上只需下载canvas-to-blob.min.js即可。我会推荐其他人直接使用toDataURL polyfill,但我找不到。

代码语言:javascript
复制
if (typeof HTMLCanvasElement.prototype.toDataURL !== "function") {
  HTMLCanvasElement.prototype.toDataURL = function() {
    this.toBlob(function (blob) {
      var fileReader = new FileReaderSync();
      return fileReader.readAsDataURL(blob);
    });
  };
}
票数 2
EN

Stack Overflow用户

发布于 2017-11-07 14:08:24

1)尝试在超时后获取图像

代码语言:javascript
复制
window.setTimeout(function(){var result = $('canvas')[0].toDataURL();
},100);

2)在获取图片url之前,可以查看canvas中是否有透明像素

代码语言:javascript
复制
var canvas = $('canvas')[0];
var ctx = canvas .getContext("2d")
var data = ctx.getImageData(0,0,canvas .width,canvas .height);
console.dir(data);//empty pixel it is each [0,0,0,0] array (rgba(0,0,0,0))

3)试着把你的画布写在其他画布上

代码语言:javascript
复制
var canvas = $('canvas')[0];
var tmpCanvas = document.createElement("canvas");
tmpCanvas.width = canvas.width;
tmpCanvas.height = canvas.height;
tmpCanvas.getContext("2d").drawImage(canvas,0,0,tmpCanvas.width,tmpCanvas.height,0,0,tmpCanvas.width,tmpCanvas.height);
var result = tmpCanvas.toDataURL(); 

4)尝试将blobs发送到服务器,而不是base64,它对内存更友好:https://stackoverflow.com/a/34924715/5138198

5)或者更好的做法是阅读这篇文章:https://stackoverflow.com/a/45223017/5138198

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47009400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档