ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

ぼかし

トイカメラ風の画像を加工する工程の中で既に出てきていますが(サンプル画像はコントラスト等を調整しているので)ぼかし処理だけを入れた場合の画像。

  private Bitmap effectShadeing( Bitmap bitmap, int range ){

    if( bitmap == null ){
      bitmap = BitmapFactory.decodeResource( getResources( ), R.drawable.original ).copy( Bitmap.Config.ARGB_8888, true );
    }

    if( bitmap == null ){
      return bitmap;
    }

    if( bitmap.isMutable( ) != true ){
      bitmap = bitmap.copy( Bitmap.Config.ARGB_8888, true );
    }

    int height   = bitmap.getHeight( );
    int width    = bitmap.getWidth( );
    int[] pixels = new int[( width * height )];
    bitmap.getPixels( pixels, 0, width, 0, 0, width, height );

    int i, j, ii, jj;
    int pixel = 3;

    for( i = 0; i < width; ++i ){
      for( j = 0; j < height; ++j ){

        int r, g, b;
        float sumR, sumG, sumB;
        sumR = 0.0f;
        sumG = 0.0f;
        sumB = 0.0f;

        for( ii = -pixel; ii <= pixel; ii++ ){
          for( jj = -pixel; jj <= pixel; jj++ ){

            if( ( i + ii ) < 0 || width  <= ( i + ii ) ||
                ( j + jj ) < 0 || height <= ( j + jj ) ){
              continue;
            }

            int bitmapColor = pixels[( ( i + ii ) + ( j + jj ) * width )];

            r = Color.red( bitmapColor );
            g = Color.green( bitmapColor );
            b = Color.blue( bitmapColor );

            sumR += (float)r;
            sumG += (float)g;
            sumB += (float)b;
          }
        }

        int rr, gg, bb;
        rr = (int)( sumR / Math.pow( ( 1 + ( 2 * pixel ) ), 2 ) );
        gg = (int)( sumG / Math.pow( ( 1 + ( 2 * pixel ) ), 2 ) );
        bb = (int)( sumB / Math.pow( ( 1 + ( 2 * pixel ) ), 2 ) );
        
        if( range <= 0 ||
            !( i < ( ( width  / 2 ) + range ) && ( ( width  / 2 ) - range ) < i &&
               j < ( ( height / 2 ) + range ) && ( ( height / 2 ) - range ) < j ) ){
          pixels[( i + j * width )] = Color.rgb( rr, gg, bb );
        }
      }
    }

    bitmap.setPixels( pixels, 0, width, 0, 0, width, height );

    return bitmap;
  }

オリジナル:
f:id:masugata:20110405125239:image:medium
ぼかし(全部)(違いは詳細で見てください):
f:id:masugata:20110404134830:image:medium
ぼかし(真ん中ボカシ無し)(違いは詳細で見てください):
f:id:masugata:20110404131642:image:medium