使用putImageData从画布上的像素数组绘制图像
Draw image from pixel array on canvas with putImageData
我正在研究一个可以加密图像并在画布上重新绘制解密图像的项目。由于我对编码和编程仍然很陌生,我目前有重新绘制解密图像数据的问题,这是R,G,B, a形式的像素数组。我认为只要将数据放入
就可以实现这一点。ctx.putImageData(imgd,0,0);
但是firebug告诉我这个值没有实现imagedata的接口。我在这里张贴了整个数组。图片尺寸:160px宽,120px高
是否有任何方法来重新格式化数组,使其在画布上绘制?
使用Uint8可以更快:
var canvas = document.createElement("canvas"),
ctx = canvas.getContext("2d"),
img = [27,32,26,28, ... ];
// Get a pointer to the current location in the image.
var palette = ctx.getImageData(0,0,160,120); //x,y,w,h
// Wrap your array as a Uint8ClampedArray
palette.data.set(new Uint8ClampedArray(img)); // assuming values 0..255, RGBA, pre-mult.
// Repost the data.
ctx.putImageData(palette,0,0);
不需要一个字节一个字节,除非你需要先修改值
假设imgd
只是一个包含所有字节值的数组,您仍然需要将该数组转换为ImageData。
var imgd = [27,32,26,28,33,27,30,35,29,31.....]
// first, create a new ImageData to contain our pixels
var imgData = ctx.createImageData(160, 120); // width x height
var data = imgData.data;
// copy img byte-per-byte into our ImageData
for (var i = 0, len = 160 * 120 * 4; i < len; i++) {
data[i] = imgd[i];
}
// now we can draw our imagedata onto the canvas
ctx.putImageData(imgData, 0, 0);
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使线条的边缘像素保持半透明
- 画布:逐像素绘制图像并请求动画帧计时
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- HTML 画布像素数据类型
- 从 JavaScript 中的图像中读取像素数据会返回半透明像素的意外结果
- 鼠标悬停时显示像素数
- HTML 缩放元素,其尺寸以百分比定义,就像以像素定义一样
- 使用带有 NodeJS 的图像像素数组跟踪边界
- 获取动画 jQuery Java 脚本中行进的像素数
- 无法将图像数据 URI 转换为像素数据数组
- 将图像像素数据转换为坐标数组
- 如何指定每一步滚动移动的像素数
- 动画定义像素数的问题
- 画布像素数据的跨浏览器规范
- 使用putImageData从画布上的像素数组绘制图像
- 如何使滚动To+像素数而不是依赖于锚点
- 如何将画布像素数组传递给C++代码并将其保存为 jpeg