0

これは、stackoverflow での最初の投稿です。

だから私はフォトショップからこれらのカスタム .acv ファイルを持っています。私がやりたいことは、カラーマトリックスを使用してビットマップをフィルタリングしようとしていることです。そのために、これらの .acv ファイルを解析して、カラーマトリックスで使用される RGB 値を取得しています。これどうやってするの?

編集: .acv ファイルから RGB 値を指定するカラーマトリックス コードを次に示します。残っているのは、それらの値を抽出する方法だけです。

private Bitmap filterBitmap(Bitmap bitmap) {
    Bitmap bitmapResult = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvasResult = new Canvas(bitmapResult);
    Paint paint = new Paint();

    // R' = a*R + b*G + c*B + d*A + e;
    // G' = f*R + g*G + h*B + i*A + j;
    // B' = k*R + l*G + m*B + n*A + o;
    // A' = p*R + q*G + r*B + s*A + t;
    float m = 255f;
    float t = -255 * 128f;
    ColorMatrix colorMatrix = new ColorMatrix(new float[]{
            m, 0, 0, 1,
            0, m, 0, 1,
            0, 0, m, 1,
    });
    ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix);
    paint.setColorFilter(filter);
    canvasResult.drawBitmap(bitmap, 0, 0, paint);

    return bitmapResult;
}
4

1 に答える 1

0

これを行うには、フル パレット イメージにカーブを適用し、結果のイメージから RGB 値を抽出します。ソース画像は次のとおりです。

ここに画像の説明を入力

しかし、私は OpenGL フラグメント シェーダーを使用しているため、そうしました。そのため、解像度が低く、結果があまり正確ではありません (ただし、非常に問題ありません)。

于 2015-01-19T16:01:50.660 に答える