我正在尝试操作html5画布上的像素。使用getImageData方法,我只得到一个带有画布RGBA值的Uint8Array。 是否有可能获得更精确的数组?我想操纵图片的所有16位颜色值。
答案 0 :(得分:2)
不,因为画布上下文的颜色空间必须匹配CSS颜色值的颜色空间:
在支持CSS的用户代理中,canvas元素使用的颜色空间必须与用于处理CSS中该元素的任何颜色的颜色空间匹配。
ImageData
的当前规范也只提供8位数组:
interface ImageData {
readonly attribute unsigned long width;
readonly attribute unsigned long height;
readonly attribute Uint8ClampedArray data;
};
答案 1 :(得分:0)
如今,大多数显示系统的通常颜色分辨率是每个颜色通道8位和像素(每RGBA像素32位),并且在不久的将来不太可能增加,因为人眼无法区分更小的颜色nunaces。因此,getImageData和setImageData每个颜色通道使用8位。
通常只有图像处理才需要更高的色彩分辨率。如果要在内部以每个通道16位或更多位执行图像处理操作,您始终可以自己转换getImageData返回的值,并在使用setImageData返回之前将它们转换回8位。