- 656 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 07:26:42 ]
- こういう時は
Y = (red * 19589+ green * 38444+ blue * 7503) / 0x10000; か、 Y = (red * 77 + green * 150+ blue * 29)/ 256 ; と2のベキにしたらどうかな /256 は >>8 に出来る 8bitにすれば rgbも8bitだから 16bitの入れ物で計算出来る dstRGB[i] = (((Y * volume + red * (100 - volume)) / 100)<<16) + (((Y * volume + green * (100 - volume)) / 100)<<8) + ((Y * volume + blue * (100 - volume)) / 100); もvolumeを2のベキにして Y*k + X*(1-k) = X+(Y-X)*k なので dstRGB[i] = ((( red + (( (Y - red )*volume)>>8) )<<16) + ((( green+ (( (Y - green)*volume)>>8) )<<8) + (( blue + (( (Y - blue )*volume)>>8) ); としたら掛け算は減らせるよ
|

|