1

私は処理に取り組んでおり、低レベルのコードで関数ブレンドを最も軽量に再作成したいと考えています。

ドキュメントで見たC = max(A * factor, B)

  • C返された色です
  • Aソースです
  • B混ぜるイメージです

指定された係数は、ピクセルの色を表す 32 ビット整数の最初の 8 ビット (左から) で表されるソース ピクセルのアルファ コンポーネントに基づいていることを Web で見ました。これらの左端のビットは、最上位ビットとも呼ばれます。

出典:この本、464ページ

私はそれについてどう考えるべきですか?

これはその部分の私のコードです:

for (int y = 0; y < capWidth * capHeight; y++) {
    int factor = (pixels[y] >> 24) & 0xFF;
    pixels[y] = max(pixels[y] * factor, previousFrame.pixels[y]);      
} 

それはうまくいきません。

4

3 に答える 3

0

各色: C = A(a/255) + B(1-(a/255))、ここで:

A はフォアグラウンド値、

B はバックグラウンド値、

C は結果の値であり、

a はアルファ成分です。

これはアルファ ブレンディング ウィキ ページによるものです: http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending

于 2012-10-25T19:30:17.293 に答える
0

http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/index.html

Lighten をブレンドするための SVG 処理 javadoc を入手しました。良い !

于 2012-10-26T14:05:36.463 に答える
0
  1. factor元の数式の は 0 ~ 1 の浮動小数点数でありfactor、コードの は 0 ~ 255 の整数であるため、これは機能しません。
  2. これはブレンドの公式ではありません。ブレンドするには、最大値を取るのではなく、色を追加する必要があります
于 2012-10-25T18:52:36.727 に答える