【发布时间】:2022-02-23 11:41:24
【问题描述】:
我正在尝试将数组转换为 base64 字符串。然后又回来了。我做了一个简单的示例,示例数组如下所示:[0, 1, 2, 3, 0, 1, 2, 3] 并在画布中使用.toDataURL() 进行转换。但由于某种原因,当我读回 base64 字符串并将其应用到画布时,它返回不同的图像数据:[0, 0, 0, 3, 0, 0, 0, 3]。
为什么会这样?
例子:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const array = new Uint8ClampedArray([0, 1, 2, 3, 0, 1, 2, 3]);
const initialImageData = new ImageData(array, 2, 1);
ctx.putImageData(initialImageData, 0, 0);
const dataURL = canvas.toDataURL();
console.log(dataURL); // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAAXNSR0IArs4c6QAAAA9JREFUGFdjZGBgYGYAAgAAIQAFoFclWQAAAABJRU5ErkJggg==
const img = new Image();
img.onload = () => {
canvas.width = 2;
canvas.height = 1;
ctx.drawImage(img, 0, 0);
const imageData = ctx.getImageData(0, 0, 2, 1);
console.log(imageData.data); // [0, 0, 0, 3, 0, 0, 0, 3]
}
img.src = dataURL;
【问题讨论】:
标签: javascript image canvas base64