Baseline Widely available
CanvasRenderingContext2D.putImageData()
меÑод Canvas 2D API ÑиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из заданного ImageData
обÑекÑа на Ñ
олÑÑ. Ðа ÑÑÐ¾Ñ Ð¼ÐµÑод не влиÑÐµÑ Ð¼Ð°ÑÑиÑа пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ
олÑÑа.
ÐÑимеÑание: ÐаннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñ Ñ
олÑÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼ÐµÑода getImageData()
.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе найÑи болÑÑе инÑоÑмаÑии о putImageData()
и обÑиÑ
манипÑлÑÑиÑÑ
Ñ ÑодеÑжимÑм Ñ
олÑÑа в ÑÑаÑÑе ÐикÑелÑнÑе манипÑлÑÑии Ñ Ñ
олÑÑом.
void ctx.putImageData(imageData, dx, dy); void ctx.putImageData(imageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);ÐаÑамеÑÑÑ
imageData
ÐбÑÐµÐºÑ ImageData
, ÑодеÑжаÑий маÑÑив знаÑений пикÑелей..
dx
ÐоÑизонÑалÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ (кооÑдинаÑа x), в коÑоÑой Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑазмеÑÑиÑÑ Ð´Ð°Ð½Ð½Ñе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Ñелевом Ñ Ð¾Ð»ÑÑе.
dy
ÐеÑÑикалÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ (кооÑдинаÑа y), в коÑоÑой Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑазмеÑÑиÑÑ Ð´Ð°Ð½Ð½Ñе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Ñелевом Ñ Ð¾Ð»ÑÑе.
dirtyX
ÐеобÑзаÑелÑнÑй
ÐоÑизонÑалÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ (кооÑдинаÑа x) веÑÑ Ð½ÐµÐ³Ð¾ левого Ñгла, из коÑоÑого бÑдÑÑ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ñ Ð´Ð°Ð½Ð½Ñе изобÑажениÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ 0.
dirtyY
ÐеобÑзаÑелÑнÑй
ÐеÑÑикалÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ (кооÑдинаÑа y) веÑÑ Ð½ÐµÐ³Ð¾ левого Ñгла, из коÑоÑого бÑдÑÑ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ñ Ð´Ð°Ð½Ð½Ñе изобÑажениÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ 0.
dirtyWidth
ÐеобÑзаÑелÑнÑй
ШиÑина пÑÑмоÑголÑника Ð´Ð»Ñ ÑиÑованиÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑиÑина даннÑÑ Ð¸Ð·Ð¾Ð±ÑажениÑ.
dirtyHeight
ÐеобÑзаÑелÑнÑй
ÐÑÑоÑа пÑÑмоÑголÑника Ð´Ð»Ñ ÑиÑованиÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑÑоÑа даннÑÑ Ð¸Ð·Ð¾Ð±ÑажениÑ.
NotSupportedError
ÐÑбÑаÑÑваеÑÑÑ, еÑли лÑбой из аÑгÑменÑов беÑконеÑен.
InvalidStateError
ÐÑбÑаÑÑваеÑÑÑ, еÑли даннÑе обÑекÑа ImageData бÑли оÑделенÑ.
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ, ÑÑо ÑÑÐ¾Ñ Ð°Ð»Ð³Ð¾ÑиÑм Ð´ÐµÐ»Ð°ÐµÑ Ð¿Ð¾Ð´ капоÑом, Ð²Ð¾Ñ ÑеализаÑÐ¸Ñ ÑвеÑÑ
Ñ CanvasRenderingContext2D.fillRect()
.
<canvas id="canvas"></canvas>
JavaScript
let canvas = document.getElementById("canvas");
let ctx = canvas.getContext("2d");
function putImageData(
ctx,
imageData,
dx,
dy,
dirtyX,
dirtyY,
dirtyWidth,
dirtyHeight,
) {
let data = imageData.data;
let height = imageData.height;
let width = imageData.width;
dirtyX = dirtyX || 0;
dirtyY = dirtyY || 0;
dirtyWidth = dirtyWidth !== undefined ? dirtyWidth : width;
dirtyHeight = dirtyHeight !== undefined ? dirtyHeight : height;
let limitBottom = dirtyY + dirtyHeight;
let limitRight = dirtyX + dirtyWidth;
for (let y = dirtyY; y < limitBottom; y++) {
for (let x = dirtyX; x < limitRight; x++) {
var pos = y * width + x;
ctx.fillStyle =
"rgba(" +
data[pos * 4 + 0] +
"," +
data[pos * 4 + 1] +
"," +
data[pos * 4 + 2] +
"," +
data[pos * 4 + 3] / 255 +
")";
ctx.fillRect(x + dx, y + dy, 1, 1);
}
}
}
// ÐаÑиÑÑйÑе конÑÐµÐ½Ñ Ð½Ð° Ñ
олÑÑе
ctx.fillRect(0, 0, 100, 100);
// СоздайÑе обÑÐµÐºÑ ImageData из него
let imagedata = ctx.getImageData(0, 0, 100, 100);
// иÑполÑзÑйÑе ÑÑнкÑÐ¸Ñ putImageData, коÑоÑÐ°Ñ Ð¸Ð»Ð»ÑÑÑÑиÑÑеÑ, как ÑабоÑÐ°ÐµÑ putImageData
putImageData(ctx, imagedata, 150, 0, 50, 50, 25, 25);
РезÑлÑÑÐ°Ñ ÐоÑеÑÑ Ð´Ð°Ð½Ð½ÑÑ
из-за опÑимизаÑии бÑаÑзеÑа
ÐÑедÑпÑеждение: Ðз-за Ñ
аÑакÑеÑа поÑеÑÑ Ð¿Ñи пÑеобÑазовании в и из пÑедваÑиÑелÑно ÑмноженнÑÑ
знаÑений алÑÑа-ÑвеÑа пикÑели, коÑоÑÑе бÑли ÑолÑко ÑÑо ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ putImageData()
, могÑÑ Ð±ÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐµÐ½Ñ Ð² ÑквиваленÑнÑй getImageData()
в каÑеÑÑве ÑазлиÑнÑÑ
знаÑений.
const canvas = document.createElement("canvas");
canvas.width = 1;
canvas.height = 1;
const context = canvas.getContext("2d");
const imgData = context.getImageData(0, 0, canvas.width, canvas.height);
const pixels = imgData.data;
pixels[0 + 0] = 1;
pixels[0 + 1] = 127;
pixels[0 + 2] = 255;
pixels[0 + 3] = 1;
console.log("before:", pixels);
context.putImageData(imgData, 0, 0);
const imgData2 = context.getImageData(0, 0, canvas.width, canvas.height);
const pixels2 = imgData2.data;
console.log("after:", pixels2);
ÐÑвод Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ Ñак:
before: Uint8ClampedArray(4) [ 1, 127, 255, 1 ] after: Uint8ClampedArray(4) [ 255, 255, 255, 1 ]СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4