如何在画布中提取图像的一部分并将其用作div的背景图像?

拉米亚

这是我的代码的样子:

document.addEventListener('DOMContentLoaded', function () {
        var canvas = document.querySelector('canvas');
        var ctx = canvas.getContext("2d");
        var imageData = ctx.getImageData(0, 0, 300, 300);
        var tile = {
                        'id': 1,
                        'data': imageData,
                        'dataUrl': imageData.toDataUrl()
                    };
        var div = document.createElement('div');
                div.classList.add('tile');
                grid.appendChild(div);
                div.style.backgroundImage = ('url(' + tile.dataUrl + ')');
});

我正在尝试从高度和宽度为300px的(0,0)中提取画布上图像的一部分,并将该imageData对象转换为dataUrl以用作div的背景。

我收到一个错误:imageData.toDataUrl()不是一个函数。我该如何实现?

提前致谢!

海道

toDataURL是一种HTMLCanvasElement必须从canvas元素本身调用方法。

您可以将生成的imageData大小更改为所需的画布后,将其拖回画布,但是最简单的解决方案是使用第二个屏幕外画布,由于该context.drawImage方法,您将在其中绘制第一个画布

// The crop function
var crop = function(canvas, offsetX, offsetY, width, height, callback) {
  // create an in-memory canvas
  var buffer = document.createElement('canvas');
  var b_ctx = buffer.getContext('2d');
  // set its width/height to the required ones
  buffer.width = width;
  buffer.height = height;
  // draw the main canvas on our buffer one
  // drawImage(source, source_X, source_Y, source_Width, source_Height, 
  //  dest_X, dest_Y, dest_Width, dest_Height)
  b_ctx.drawImage(canvas, offsetX, offsetY, width, height,
                  0, 0, buffer.width, buffer.height);
  // now call the callback with the dataURL of our buffer canvas
  callback(buffer.toDataURL());
};


// #main canvas Part

var canvas = document.getElementById('main');
var img = new Image();
img.crossOrigin = "Anonymous";

img.onload = function() {
  canvas.width = this.width;
  canvas.height = this.height;
  canvas.getContext('2d').drawImage(this, 0, 0);
  // set a little timeout before calling our cropping thing
  setTimeout(function() {
    crop(canvas, 100, 70, 70, 70, callback)
  }, 1000);
};

img.src = "https://dl.dropboxusercontent.com/s/1alt1303g9zpemd/UFBxY.png";

// what to do with the dataURL of our cropped image
var callback = function(dataURL) {
  document.body.style.backgroundImage = 'url(' + dataURL + ')';
}
<canvas id="main" width="284" width="383"></canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从4D图像中提取FFT的第一部分

如何在Android中将图像的一部分用作按钮背景?

CMD:提取文件名的一部分并将其用作变量

如何仅将我的精灵图像的一部分重复作为div的背景

画布drawBitmap仅是图像的一部分

在QML / Qt中模糊背景图像的一部分

如何在react native中添加背景图像,以使其占据屏幕的整个高度但仅占宽度的一部分?

如何渲染QGraphicsScene的一部分并将其保存为图像文件PyQt5

使用 openCV 提取图像的一部分

将背景图像从一个部分重叠到另一部分

如何在蜂巢中提取字符串的一部分

如何在Haskell中提取URL路径的最后一部分

如何在RDD中提取一部分字符串?

如何在javascript中提取字符串的一部分?

如何在RegEx中提取字符串的一部分

如何在Java中提取CSV文件的文件名的一部分

如何在python中提取一部分字符串?

如何从文件名中提取字符串的一部分并将其添加到该文件中

如何用Java提取此图像的一部分?

如何使用Matlab提取图像的一部分

如何显示大图像的一部分?

如何仅显示图像的一部分

如何淡化图像的一部分

如何仅分析图像的一部分?

捕获我的画布下的图像作为图像的一部分

如何不显示超出其div范围的图像的一部分

如何提取文档的一部分并将其保存到新文档(Mac命令行)

如何提取curl命令输出的一部分并将其分配给shell变量?

如何在鼠标悬停的位置显示模糊图像的一部分?