2011-07-13 9 views
2

私はHTML5キャンバスAPIを試していて、カラー画像から白黒画像を作成するスクリプトを書いています。RGB操作式

RGBための式は、私が使用していることをグレースケールには、次のとおりです。r * 0.2989 + g * 0.5870 + b * 0.1140

私は誰もがRGB値による画像を操作するための任意の複数の式を知っているかどうかを知りたいと思います。ここ

+0

[/強度をグレースケールにRGBを変換]の可能な複製である(http://stackoverflow.comあります/ questions/687261/converting-rgb-to-grayscale-intensity) –

+2

実際、この質問はそれより広いです。それは一般的に画像の色を変える方法を求めています。 –

+0

明らかにPeterさん –

答えて

5

は、いくつかの

C0及びC1は、色小数点値及びcは
// ADD 
c = Math.min(255, Math.max(0, c0 + c1)) 
// SUBTRACT 
c = Math.max(0, c0 - c1) 
// MULTIPLY 
c = Math.floor((c1 * c0)/0xff) 
// SCREEN 
c = 255 - Math.floor((255 - c0) * (255 - c1)/255) 
// LIGHTEN 
c = c0 > c1 ? c0 : c1 
// DARKEN 
c = c0 < c1 ? c0 : c1 
// DIFFERENCE 
c = c0 > c1 ? c0 - c1 : c1 - c0 
// INVERT (no influence from c1) 
c = 255 - c0 
// OVERLAY 
c = c0 < 128 ? Math.floor((c1 * c0)/127) : 255 - Math.ceil((255 - c0) * (255 - c1)/127) 
// HARDLIGHT 
c = c1 < 128 ? Math.floor((c1 * c0)/127) : 255 - Math.ceil((255 - c0) * (255 - c1)/127) 

出力値

1

は、画像を暗くする方法である:

(r*0.5) + (g*0.5) + (b*0.5) 

カラーチャネルを交換するような閾値としてRGBの色を操作するためのいくつかの他の方法は、唯一の赤、緑、青のカラーチャンネルを示すがあり、色の反転、コントラストや明るさなどがあります。これらのキーワードを使ってWebを検索すると、画像の色を変更する他の方法が明らかになります。 This questionは、既存の色の色合いや色合いを作成する方法を説明しています。特に、線形RGBおよびガンマ補正に関する発言に注意してください。ここで