4

UIimage の色を透明に変更したい 私は以下のコードを使用して黒色を透明に変更しています

-(void)changeColorToTransparent: (UIImage *)image{
    CGImageRef rawImageRef = image.CGImage;
    const float colorMasking[6] = { 0, 0, 0, 0, 0, 0 };
    UIGraphicsBeginImageContext(image.size);
    CGImageRef maskedImageRef =  CGImageCreateWithMaskingColors(rawImageRef, colorMasking);
   {
       CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height);
       CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0);
   }

   CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef);
   UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
   CGImageRelease(maskedImageRef);
   UIGraphicsEndImageContext();
 }

正常に動作しています..しかし、カラーフォームカラーピッカーを選択して画像にポイントを描画し、そのポイントを透明にしたい..下の行のカラーマスキングで値を指定する方法がわかりません

const float colorMasking[6] = { 0, 0, 0, 0, 0, 0 };

色を透明にする方法を教えてください。

4

2 に答える 2

1

ドキュメントから:

コンポーネント

イメージをマスクする色または色の範囲を指定する色コンポーネントの配列。配列には 2N 個の値 { min 1 , max 1 , ... min[N], max[N] } が含まれている必要があります。ここで、N はイメージの色空間のコンポーネントの数です。コンポーネントの各値は、有効な画像サンプル値でなければなりません。イメージに整数のピクセル コンポーネントがある場合、各値は [0 .. 2**bitsPerComponent - 1] の範囲内でなければなりません (ここで、bitsPerComponent はイメージのビット/コンポーネントの数です)。イメージに浮動小数点ピクセル コンポーネントがある場合、各値は、有効なカラー コンポーネントである任意の浮動小数点数にすることができます。

簡単に言えば、典型的な RGB 画像 (RGB は色空間の名前) がある場合、R (赤)、G (緑)、B (青) の 3 つのコンポーネントがあり、それぞれの範囲は 0 から255 (2**8 - 1、コンポーネントあたり 8 ビットと仮定)。

したがって、colorMasking透明にする各コンポーネントの値の範囲を定義します。つまり、 の最初の要素colorMaskingは最小の赤のコンポーネント、2 番目の要素は最大の赤のコンポーネント、3 番目の要素は最小の緑のコンポーネントなどです。前方へ。

結果の画像は、一部のピクセルが透明な入力画像になります。どのピクセル?RGB 値が で設定した範囲内にあるものcolorMasking

あなたの例では、黒を透明にしたいので、配列はすべてゼロです(そして、RGBの黒の色は(0,0,0)であることを覚えておいてください)。

于 2013-10-18T07:04:55.420 に答える