javascript - 创建 2d context *without* canvas

标签 javascript html canvas

我目前正在寻找一种方法来创建 Canvas 2d 渲染上下文,而无需在页面上实际使用 Canvas 元素。我可以动态创建一个 canvas 元素并隐藏它,但我又不想在任何时候直接向用户显示图像,因此在页面中实际拥有 canvas 元素没有意义。所以我基本上是在寻找类似于

的东西
var image = new Image( );

但只针对canvas 2d渲染上下文(伪代码)

var context = new 2dContext( );

有这样的功能吗?我找不到类似的东西。呼唤

var context = new CanvasRenderingContext2D( );

这是 HTML5 规范的呈现上下文接口(interface)的名称,这让我在 Firefox 中出现尴尬的错误:

uncaught exception: [Exception... "Cannot convert WrappedNative to function" nsresult: "0x8057000d (NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN)" location: "JS frame :: http://localhost/ :: <TOP_LEVEL> :: line 25" data: no]

最佳答案

可以使用 Canvas 而不在页面上显示它。您可以执行以下操作:

// Create a canvas element
var canvas = document.createElement('canvas');
canvas.width = 500;
canvas.height = 400;

// Get the drawing context
var ctx = canvas.getContext('2d');

// Then you can do stuff, e.g.:
ctx.fillStyle = '#f00';
ctx.fillRect(20,10,80,50);

一旦你使用了 Canvas ,你当然可以将它添加到文档中

var element = document.getElementById('canvas_container');
element.appendChild(canvas);

或者您可以从中制作图像:

var new_image_url = canvas.toDataURL();
var img = document.createElement('img');
img.src = new_image_url;

或者您可以通过以下方式访问 Canvas 数据作为值:

var image_data = ctx.getImageData(0, 0, canvas.width, canvas.height);
var rgba_byte_array = image_data.data;
rgba_byte_array[0];  // red value for first pixel (top left) in the canvas

关于javascript - 创建 2d context *without* canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892010/

相关文章:

javascript - TypeScript 中声明的模块被重新声明

javascript - 使用 JavaScript 标记列表中的单词

javascript - 来自 getImageData 的 RGB 值未定义

javascript - 如何将代码从 rxjs v5 转换为 rxjs v6 以进行 catch?

javascript - 这个站点感染脚本是如何工作的?

javascript - 如何获取具有重复属性名称的对象中的最大属性值?

html - 文本转换 : lowercase is not working in email templates

javascript - Bootstrap 在不同的屏幕上无法正常工作

javascript - IE 11、10 和 9 中的图像缩放很糟糕

javascript - 球移动不顺畅