2011年9月14日水曜日

イメージをグレースケールにしたりカラーに戻したり

今回はイメージボタンの画像を動的にグレースケールにしたりカラーに戻したりと いうようなことをやってみました。 使用するクラスは、ColorMatrixColorFilterクラス。
ColorMatrixクラスのインスタンスメソッドのsetSaturationで HSV色空間のS(彩度)を0に設定したマトリクスを作成します。
そのマトリクスを使ってColorMatrixColorFilterを生成することで、 グレースケール用のフィルタを作成しています。
後は、イベントをトリガーに対象のイメージボタンの ColorFilterに設定したり、nullで取り除いたりすることで、 動的にグレースケールとの切り替えが行えます。

以下適当なサンプルコード


    private ColorMatrixColorFilter grayScaleFilter;
    private ImageButton imgBtn;

    private void initialize(){
        imgBtn = (ImageButton) findViewById(id.imageButtonA);
        ColorMatrix matrix = new ColorMatrix();
        matrix.setSaturation(0);
        grayScaleFilter = new ColorMatrixColorFilter(matrix);
    }

    public void changeGrayScaleMode(){
        imgBtn.setColorFilter(grayScaleFilter);
    }
    public void changeColorMode(){
        imgBtn.setColorFilter(null);
    }


追記
厳密に言うと彩度を0にするのと、グレースケールとは違うのだけどまぁいいか。

0 件のコメント: