Processing 从颜色到整数

Processing 从颜色到整数,processing,Processing,我无法理解以下代码: 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 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()
函数从中提取出来的呢?

您使用的颜色值是颜色的十六进制版本,其中红绿蓝代表RGB,RGB是CMYK的另一种颜色格式

例如,0红色、0绿色和0蓝色表示黑色与#000000相同,或者256表示白色也与#FFFFFF相同

我还发现了一些将rgb转换为十六进制的JavaScript示例。见下文:

函数rgbToHex(R,G,B){returntohex(R)+toHex(G)+toHex(B);} 函数toHex(n){ n=parseInt(n,10); 如果(isNaN(n))返回“00”; n=Math.max(0,Math.min(n,255)); 返回“0123456789ABCDEF”。字符((n-n%16)/16) +“0123456789ABCDEF”字符(n%16); } 存储为一个普通的32位整数。每个8位(256个范围)包含ARGB(a=alpha)的值,有些像aaarrrrggggbbbb,当打印为整数时会产生奇怪的结果。red()、green()和blue()从int中提取组件。对于它们,有使用位移位操作的替代(更快)方法,例如:

红色(c)=c>>16&0xFF

查看上面链接的wiki入口。

引用:“颜色数据类型只是
int
的别名,两者可以在处理语法中互换使用。处理提供了颜色类型,因为刚开始编程的程序员经常会发现,像素数据存储为整数值令人困惑。”