html - 如何在 Canvas 元素上渲染 blob?

标签 html canvas blob

如何将图像 block 渲染到 Canvas 元素?

到目前为止,我有这两个(简化的)函数来捕获图像,将其转换为 blob 并最终在 Canvas 上渲染 blob in this codepen, it just returns the default black image.

var canvas = document.getElementById('canvas');
var input = document.getElementById('input');
var ctx = canvas.getContext('2d');
var photo;


function picToBlob() {
  var file = input.files[0];

  canvas.toBlob(function(blob) {
    var newImg = document.createElement("img"),
      url = URL.createObjectURL(blob);

    newImg.onload = function() {
      ctx.drawImage(this, 0, 0);
      photo = blob;
      URL.revokeObjectURL(url);
    };

    newImg.src = url;
  }, file.type, 0.5);

  canvas.renderImage(photo);
}

HTMLCanvasElement.prototype.renderImage = function(blob) {

  var canvas = this;
  var ctx = canvas.getContext('2d');
  var img = new Image();

  img.onload = function() {
    ctx.drawImage(img, 0, 0)
  }
  img.src = URL.createObjectURL(blob);
}

input.addEventListener('change', picToBlob, false);

最佳答案

我认为您需要稍微整理一下代码。很难知道您要实现什么,因为有许多不必要的代码行。主要问题是 blob 在这里未定义

HTMLCanvasElement.prototype.renderImage = function(blob){

因为 photo 永远不会在 toBlob 函数中初始化...这对于您要实现的目标来说是不必要的。

这是您的代码片段的简化工作版本

var canvas = document.getElementById('canvas');
var input = document.getElementById('input');


  function picToBlob() {
    canvas.renderImage(input.files[0]);
  }

HTMLCanvasElement.prototype.renderImage = function(blob){
  
  var ctx = this.getContext('2d');
  var img = new Image();

  img.onload = function(){
    ctx.drawImage(img, 0, 0)
  }

  img.src = URL.createObjectURL(blob);
};

input.addEventListener('change', picToBlob, false);
<input type='file' accept='image' capture='camera' id='input'>
<canvas id = 'canvas'></canvas>

关于html - 如何在 Canvas 元素上渲染 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004917/

相关文章:

json - 您能否将 Blob 存储中的 JSON 文件的完整内容获取到 ADF 变量中?如果是这样,怎么办?

html - iText 5 可以将 PDF 转换为 HTML 吗?

image - HTML5 Canvas ,绘制后缩放图像

html - 在 Html5 Canvas 中显示颠倒的文本

list - 容器的 Azure SAS token 引发 'invalid Signature Size' 错误

java - 将图像保存在 Oracle 中,稍后无需检索 BMP

javascript - 在表格行上 Accordion 切换但在特定单元格上阻止

javascript - 如何获取输入数组元素jquery的所有值

jQuery 似乎只在一个实例上运行

javascript - 为什么这 block Canvas 会不断增长? (动态调整 Canvas 大小)