我无法理解以下代码:
int pixel = img.pixels[i];
// println("Working on pixel " + i + " out of " + img.pixels.length);
int red = (int) red(pixel);
int green = (int) green(pixel);
int blue = (int) blue(pixel);
我认为img.pixels[]
给出color
值。那么如何将其存储在int
中,然后通过red()
,blue()
和green()
函数从中提取出来?
答案 0 :(得分:1)
color in Processing存储为普通的32位int。每8位(256范围)包含ARGB(a = alpha)的值,有些像AAAARRRRGGGGBBBB,当打印为int时会产生奇怪的结果。 red(),green()和blue()从int中提取组件。 In the reference对于他们来说,存在使用位移操作的替代(更快)方法,例如:
红色(c)= c>> 16&为0xFF;
检查上面链接的维基入口。
答案 1 :(得分:0)
您习惯使用的颜色值是颜色的十六进制版本,其中红绿蓝代表RGB,这是另一种颜色格式,因为CMYK
例如0红色0绿色和0蓝色给黑色相同#000000或256 256 256会给你白色#FFFFFF
我还找到了一些将rgb转换为十六进制的JavaScript示例。见下文:
function rgbToHex(R,G,B) { return toHex(R)+toHex(G)+toHex(B); }
function toHex(n) {
n = parseInt(n,10);
if (isNaN(n)) return "00";
n = Math.max(0,Math.min(n,255));
return "0123456789ABCDEF".charAt((n-n%16)/16)
+ "0123456789ABCDEF".charAt(n%16);
}