【发布时间】:2020-02-05 21:02:12
【问题描述】:
我发现 HTML 画布的 getImageData 似乎返回了不正确的字节值。
我使用以下 Python 代码生成了一个 1x1 像素的图像:
from PIL import Image
import numpy as np
a = np.array([[[12, 187, 146, 62]]], dtype=np.uint8)
Image.fromarray(a).save('image.png')
我将图像转换为 base64 以将其包含在此代码 sn-p 中:
let image = document.createElement('img');
image.addEventListener('load', () => {
let canvas = document.createElement('canvas');
let ctx = canvas.getContext("2d");
canvas.width = image.width;
canvas.height = image.height;
ctx.drawImage(image, 0, 0);
let data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
document.body.innerHTML = data;
});
image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGPg2T3JDgADyAGYmiSbAQAAAABJRU5ErkJggg==";
在 Firefox 中运行时,它显示12,189,148,62。在 Chromium 中,它显示 12,185,144,62。但原始值为12,187,146,62。
谁能解释一下?
【问题讨论】:
-
声明:使用WebGL可以读取图像的准确字节值。