`
coolpep
  • 浏览: 80547 次
社区版块
存档分类
最新评论

色彩模式转换函数

 
阅读更多
functionHextoRGB(hex)...{
hex
=hex.toUpperCase();
if(hex.charAt(0)=="#")hex=hex.substring(1,hex.length);
varrgb=newArray(3);
rgb.r
=hex.substring(0,2);
rgb.g
=hex.substring(2,4);
rgb.b
=hex.substring(4,6);
rgb.r
=parseInt(rgb.r,16);
rgb.g
=parseInt(rgb.g,16);
rgb.b
=parseInt(rgb.b,16);
if(isNaN(rgb.r))rgb.r=0;
if(isNaN(rgb.g))rgb.g=0;
if(isNaN(rgb.b))rgb.b=0;
returnrgb;
}

functionRGBtoHex(R,G,B)...{
varn=Math.round(B);
n
+=Math.round(G)<<8;
n
+=Math.round(R)<<16;
returnDectoHex(n);
}

//turnsdecimalinteger(e.g.,bgColor)intohexadecimalstring
functionDectoHex(num)...{
vari=0;varj=20;
varstr="#";
while(j>=0)...{
i
=(num>>j)%16;
if(i>=10)...{
if(i==10)str+="A";
elseif(i==11)str+="B";
elseif(i==12)str+="C";
elseif(i==13)str+="D";
elseif(i==14)str+="E";
elsestr+="F";
}
else
str
+=i;
j
-=4;
}

returnstr;
}

functionMIN()...{
varmin=255;
for(vari=0;i<arguments.length;i++)
if(arguments[i]<min)
min
=arguments[i];
returnmin;
}

functionMAX()...{
varmax=0;
for(vari=0;i<arguments.length;i++)
if(arguments[i]>max)
max
=arguments[i];
returnmax;
}

functionRGBtoCMYK(r,g,b)...{//doesn'tdistort!notreallyusable...
r/=255;
g
/=255;
b
/=255;
varcmyk=newArray(4);
cmyk.c
=Math.pow(1-r,.45);
cmyk.m
=Math.pow(1-g,.45);
cmyk.y
=Math.pow(1-b,.45);
cmyk.k
=MIN(cmyk.c,cmyk.y,cmyk.m);
cmyk.c
-=cmyk.k;
cmyk.m
-=cmyk.k;
cmyk.y
-=cmyk.k;
returncmyk;
}

functionRGBtoHSV(r,g,b)...{
r
/=255;
g
/=255;
b
/=255;
varmin,max,delta;
varhsv=newArray(3);
min
=MIN(r,g,b);
max
=MAX(r,g,b);
hsv.v
=max;
delta
=max-min;
if(max!=0)hsv.s=delta/max;
else...{
hsv.s
=.005;
hsv.h
=0;
returnhsv;
}

if(delta==0)...{
hsv.s
=.005;
hsv.h
=0;
returnhsv;
}

if(r==max)hsv.h=(g-b)/delta;
elseif(g==max)hsv.h=2+(b-r)/delta;
elsehsv.h=4+(r-g)/delta;
hsv.h
*=60;
if(hsv.h<0)hsv.h+=360;
if(hsv.h>=360)hsv.h-=360;
returnhsv;
}

functionHSVtoRGB(h,s,v)...{
varrgb=newArray(3);
vari;
varf,p,q,t;
if(s==0)...{
rgb.r
=rgb.g=rgb.b=v*255;
returnrgb;
}

h
/=60;
i
=Math.floor(h);
f
=h-i;
p
=v*(1-s);
q
=v*(1-s*f);
t
=v*(1-s*(1-f));
switch(i)...{
case0:
rgb.r
=v;
rgb.g
=t;
rgb.b
=p;
break;
case1:
rgb.r
=q;
rgb.g
=v;
rgb.b
=p;
break;
case2:
rgb.r
=p;
rgb.g
=v;
rgb.b
=t;
break;
case3:
rgb.r
=p;
rgb.g
=q;
rgb.b
=v;
break;
case4:
rgb.r
=t;
rgb.g
=p;
rgb.b
=v;
break;
default:
rgb.r
=v;
rgb.g
=p;
rgb.b
=q;
break;
}

rgb.r
*=255;
rgb.g
*=255;
rgb.b
*=255;
returnrgb;
}

functionRGBtoHLS(R,G,B)...{
R
/=255;
G
/=255;
B
/=255;
varmax,min,diff,r_dist,g_dist,b_dist;
varhls=newArray(3);
max
=MAX(R,G,B);
min
=MIN(R,G,B);
diff
=max-min;
hls.l
=(max+min)/2;
if(diff==0)...{
hls.h
=0;
hls.s
=0;
}
else...{
if(hls.l<0.5)hls.s=diff/(max+min);
elsehls.s=diff/(2-max-min);
r_dist
=(max-R)/diff;
g_dist
=(max-G)/diff;
b_dist
=(max-B)/diff;
if(R==max)...{hls.h=b_dist-g_dist;}
elseif(G==max)...{hls.h=2+r_dist-b_dist;}
elseif(B==max)...{hls.h=4+g_dist-r_dist;}
hls.h
*=60;
if(hls.h<0)hls.h+=360;
if(hls.h>=360)hls.h-=360;
}

returnhls;
}

functionRGB(q1,q2,hue)...{
if(hue>360)hue=hue-360;
if(hue<0)hue=hue+360;
if(hue<60)return(q1+(q2-q1)*hue/60);
elseif(hue<180)return(q2);
elseif(hue<240)return(q1+(q2-q1)*(240-hue)/60);
elsereturn(q1);
}

functionHLStoRGB(H,L,S)...{
varp1,p2;
varrgb=newArray(3);
if(L<=0.5)p2=L*(1+S);
elsep2=L+S-(L*S);
p1
=2*L-p2;
if(S==0)...{
rgb.r
=L;
rgb.g
=L;
rgb.b
=L;
}
else...{
rgb.r
=RGB(p1,p2,H+120);
rgb.g
=RGB(p1,p2,H);
rgb.b
=RGB(p1,p2,H-120);
}

rgb.r
*=255;
rgb.g
*=255;
rgb.b
*=255;
returnrgb;
}


RGB 0~255
H 0~359
S、L、V 0~100
要注意的是 HLS和HSV模式转RGB的函数,输入的 L/S或者S/V值要预先除以100

找了很久才找到的,总会有用到的时候吧(我现在就正好要用到)

另外提供WEB216安全色的算法(这个其实很简单-_-bbb 附赠品 :p)
输入的值是字符串#3E6A95 这样的
functionsnaptoSafe(c)...{
varsafe=newArray;
safe[
0]=parseInt(c.substr(1,2),16);
safe[
1]=parseInt(c.substr(3,2),16);
safe[
2]=parseInt(c.substr(5,2),16);
vari;
for(i=0;i<safe.length;i++)...{
safe[i]
=Math.round(safe[i]/51)*51;
safe[i]
=safe[i].toString(16);
if(safe[i].length<2)safe[i]='0'+safe[i];
}

varthecolor='#'+safe[0]+safe[1]+safe[2];
returnthecolor;
}

返回离该色彩最近的安全色

分享到:
评论

相关推荐

    matlab色彩转换函数

    matlab编写的用于图像色彩模式转换的函数,包括hsi和rgb的互转

    RGB模式颜色转换器.zip

    RGB模式颜色转换器是一个关于利用Python编程语言进行颜色模式转换的实际案例。RGB(Red, Green, Blue)是一种广泛使用的颜色模型,尤其在数字图像处理和计算机图形学中。在这个项目中,我们将深入探讨如何在Python中...

    RGB HSL颜色模式转换

    综上所述,RGB和HSL颜色模式转换是图形处理和网页设计中的核心概念,它们各自有其独特的优点和应用场景。通过RGB与HSL之间的相互转换,我们可以更好地理解和控制颜色的表现,从而创造出丰富多彩的视觉效果。

    易语言RGB颜色转换源码

    3. **颜色转换函数**:在易语言中,我们可以编写函数来实现RGB到其他颜色模型(如CMYK、HSV等)的转换。这些函数通常包括将RGB值拆分、计算新颜色模型的值,然后组合成新的颜色。例如,从RGB到HSV的转换需要计算最大...

    24位颜色值转换16位工具

    这个"24位颜色值转换16位工具"的工作原理是通过算法将24位颜色值的每个通道进行量化,以匹配16位颜色模式的位宽。在转换过程中,可能会丢失一些颜色细节,但工具会尽可能保持颜色的视觉相似性。对于开发液晶底层程序...

    RGB模式颜色转换器.rar

    此外,对于更复杂的颜色转换,比如RGB到CMYK,可能需要自定义算法,因为colorsys模块没有提供直接的转换函数。CMYK是一种用于印刷的颜色模型,由青(Cyan)、洋红(Magenta)、黄(Yellow)和黑(Key,通常是黑色)...

    PHPRGB图片模式转换CMYK模式图片ICC文件.rar

    总结来说,PHP中的RGB到CMYK颜色模式转换是一个涉及图像处理库、色彩空间转换和ICC文件的过程。理解和正确使用这些工具对于保证色彩在不同平台和媒介上的一致性至关重要。而压缩包"PHPRGB图片模式转换CMYK模式图片...

    核心基础-RGB模式颜色转换器-Python源码示例.zip

    在这个Python源码示例中,我们将深入探讨如何实现RGB颜色的转换,包括与其他颜色模式如CMYK(青品黄黑)、HSV(色调饱和度亮度)或十六进制颜色代码的相互转换。 首先,RGB模式由三种基本颜色——红色、绿色和蓝色...

    RGB模式颜色转换器,输入RGB得到pythonRGB格式数据

    Python中的colorsys模块提供了这些颜色空间间的转换函数。例如,将RGB转换为HSV: ```python import colorsys # RGB值 rgb = (255, 0, 0) # 转换为HSV hsv = colorsys.rgb_to_hsv(*map(lambda x: x / 255.0, rgb))...

    python 开发RGB模式颜色转换器demo源码+代码注解.zip

    RGB颜色模式是计算机图形学中最常用的颜色模型,它基于红(Red)、绿(Green)和蓝(Blue)三种基本颜色的组合。这个压缩包提供的是一个Python开发的RGB颜色转换器的示例源码,带有详细的代码注解,可以帮助开发者...

    基于Python的RGB模式颜色转换器.zip

    本项目提供的基于Python的RGB模式颜色转换器可能就包含了以上功能,它可以帮助初学者和专业人士快速理解和应用颜色转换。在毕业设计或课程设计中,这样的项目不仅可以提升编程技能,还能加深对色彩理论的理解。 ...

    易语言API例程 置图像颜色管理模式

    3. **转换颜色模式**:有了当前颜色模式的信息后,可以调用`置图像颜色模式`API函数,将图像从一种颜色模式转换为另一种。这一步可能涉及到复杂的色彩空间转换算法,如从RGB到CMYK的转换。 4. **处理图像数据**:在...

    Delphi RGB颜色转换小工具

    RGB色彩模式是计算机图形学中最常用的颜色表示方式,代表红(Red)、绿(Green)、蓝(Blue)三种基本色的组合。在Delphi中,RGB颜色可以通过TColor类型表示,它是一个无符号32位整数,其中8位用于红色,8位用于绿色,8位...

    模式识别经典代码函数库

    这个经典代码函数库为初学者和有经验的开发者提供了一个宝贵的资源库,用于理解和实践模式识别算法。 在模式识别中,常见的任务包括图像分类、语音识别、文本分类、生物特征识别等。这些任务通常涉及到大量的数据...

    RGB到LAB的色域转换程序 c++

    `ColorTransform`可能是包含这些转换函数的源代码文件,可能包括了线性化、XYZ转换以及Lab转换的函数定义。`www.pudn.com.txt`可能是关于这个转换程序的说明文档或者示例数据。 编写这样的转换程序,需要注意以下几...

    易语言置图像颜色管理模式

    易语言,作为一款中国本土开发的、面向初学者的编程语言,提供了一系列的函数和方法来处理图像的颜色模式。本文将深入探讨易语言中的"置图像颜色管理模式"及其相关知识点。 首先,我们要理解什么是颜色模式。在...

    MATLAB常用命令及函数大全(字母顺序)

    `autumn`函数用于设置颜色映射表为秋季色彩方案。 #### axes - 创建坐标轴 `axes`函数用于创建新的坐标轴对象,可以在这些坐标轴上绘制图形。 #### axis - 设置坐标轴范围 `axis`函数用于设置坐标轴的显示范围,...

    RGB和LAB色彩转换.rar

    在本文中,我们将深入探讨这两种色彩模式,以及如何在易语言中进行它们之间的转换。 首先,RGB(Red, Green, Blue)色彩模型是一种加色模型,基于三种基本颜色——红、绿、蓝的组合来产生各种颜色。在显示器、电视...

    易语言源码色彩转换_模块.7z

    2. **CMYK到RGB转换**:反之,也有函数可以将CMYK值转换为RGB值,这在需要在屏幕上显示颜色时非常有用。 3. **其他色彩模型转换**:除了上述两种基本色彩模型,模块可能还包括HSV、HSL等色彩模型的转换。例如,HSV...

    PHP\颜色转换器

    5. **颜色格式扩展**:除了RGB,可能还会支持其他颜色模式,如HSV(色相、饱和度、亮度)或HSL(色相、饱和度、亮度),并提供这些模式与十进制或十六进制间的转换。 6. **颜色工具箱**:集成色彩选择器、色板和...

Global site tag (gtag.js) - Google Analytics