1

次の方法を使用して、ビットマップの色相を変更しています。

public Bitmap changeHue( Bitmap source, double hue ) {

    Bitmap result = Bitmap.createBitmap( screenWidth, screenHeight, source.getConfig() );

    float[] hsv = new float[3];
    for( int x = 0; x < source.getWidth(); x++ ) {
        for( int y = 0; y < source.getHeight(); y++ ) {
            int c = source.getPixel( x, y );
            Color.colorToHSV( c, hsv );
            hsv[0] = (float) ((hsv[0] + 360 * hue) % 360);
            c = (Color.HSVToColor( hsv ) & 0x00ffffff) | (c & 0xff000000);
            result.setPixel( x, y, c );
        }
    }

    return result;
}

それは完全に機能し、ビットマップの輝度を維持します。ただし、ビットマップ サイズ 800*480 以上の色相を変更する場合、この方法は非常に遅くなります。画質をあまり落とさずに最適化するにはどうすればよいですか?

4

1 に答える 1