3

ImageView の明るさ、コントラスト、彩度、色相を変更しています。私はそれについてたくさん検索しました。

ColorMatrixで動作するコードをいくつか取得しました。

[1.]明るさの場合、ColorMatrixは次のようなものです

    float brightness = (-50F * 1.5F);
    ColorMatrix cmB = new ColorMatrix();
    cmB.set(new float[] { 1, 0, 0, 0, brightness,
    0, 1, 0, 0,brightness,
    0, 0, 1, 0, brightness,
    0, 0, 0, 1, 0 });
    myImageView.setColorFilter(new ColorMatrixColorFilter(cmB));

適切に動作します。

[2.] Contrast ColorMatrix の場合はDifferentあり、これも適切に機能します。

しかし、これらすべての ColorMatrix は個別に機能します。最後に適用された ColorMatrix の効果は、ImageView のシーンのみであることを意味します。これは、以前に適用された ColorMatrix の効果を削除し、セットアップが最後に ColorMatrix を適用するためです。

ここで、すべての ColorMatrix を同時にマージまたはミックスアップしたいと考えています。Brightnrs / Saturation / Hue の ColorMatrix の効果に Contrast の ColorMatrix を適用することを意味します。

4

2 に答える 2

3

2 つのカラー マトリックスを適用する場合は、それらを乗算するだけです。

カラー マトリックス A とカラー マトリックス B がある場合、次のようになります。

C = B * A;
outpixel = C * inpixel 

と同等です

outpixel = B * A * inpixel

編集

これらが 5x4 行列であることに気付きました (最初は 4x4 だと思っていました)。それらを直接乗算することはできないため、乗算する前に両方の行列に5番目のID行(0,0,0,0,1)を追加し(両方を5x5にする)、5番目の行を破棄するのが適切だと思います増殖中。

于 2012-08-15T18:55:36.453 に答える