从颜色到整数

时间:2013-07-16 17:10:43

标签: 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中,然后通过red()blue()green()函数从中提取出来?

2 个答案:

答案 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);
}