javascript - 使用drawImage在canvas上绘制像素数据

标签 javascript html canvas

我有一个像素数组,我想将其绘制到 Canvas 上,而不使用 putImageData,因为该函数会忽略剪辑数据。

因此,为了完成这项工作,我将像素数组转换为数据 URL,然后将 URL 附加到图像上,然后将其绘制到 Canvas 上,如下所示:

var ctx = {
    display: document.querySelector('canvas#display').getContext('2d'),
    convert: document.querySelector('canvas#convert').getContext('2d')
}

var image_data = THE_IMAGE_DATA_THAT_I_ALREADY_HAVE;

ctx.convert.putImageData(image_data, 0, 0);

var image_data_URL = ctx.convert.canvas.toDataURL('image/png');
var converter_image = document.querySelector('img#converter-image');

converter_image.onload = function () {
    ctx.display.save();
    ctx.display.beginPath();
    ctx.display.arc(320, 240, 240, 0, Math.PI*2, true);
    ctx.display.clip();
    ctx.display.drawImage(converter_image, 0, 0, 640, 480);
    ctx.display.restore();
}
converter_image.src = image_data_URL;

但是,这会带来非常糟糕的性能,特别是因为我想以 60/秒的速度执行此操作。

一定还有别的办法吧?

最佳答案

解决方法是在屏幕外 Canvas 中使用 getImageData/putImageData 绘制像素,然后将屏幕外 Canvas 绘制回 Canvas 中。

更多信息:

Canvas offscreen

Pixel drawing with putImagedata (click on the blank in top of the code to launch it)

关于javascript - 使用drawImage在canvas上绘制像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675979/

相关文章:

javascript - 如何使用rails注销用户后清除localStorage?

javascript - 当新记录添加到他的商店时网格不更新

Javascript 正则表达式允许在金额中使用逗号

jquery - 无法在 iPhone 模型中将 Bootstrap 轮播居中

javascript - 我如何知道 HTML5 Canvas 的渲染何时完成?

php - 如何将 JavaScript 变量传递给 PHP?

javascript - 使用 PHP 的 HTML5 通知

javascript - 如何根据窗口大小动态更改图像/div 尺寸?

javascript - 将颜色选择器(jquery UI slider )连接到 Sketch.js

javascript - 使用 Canvas 和 JS 将图像转换为单色并用彩色替换黑色