私は客観的に少し新しく、Quartz 2Dでのプログラミングでも新しいので、事前にお詫び申し上げます。私はUIImageから特定の色(一色だけではない)を削除する方法があります。CGImageCreateWithMaskingColorsを使用して複数のカラーマスクを適用するにはどうすればよいですか?
1つのカラーマスクだけを適用してプロジェクトを実行すると、美しく機能します。一度積み重ねると、 'whiteRef'がNULLになります。私は色のマスクを取るために自分のメソッドを修正しようとしましたが、単純に私のメソッドを2回走らせました。
これに関するお手伝いがあります。
- (UIImage *)doctorTheImage:(UIImage *)originalImage
{
const float brownsMask[6] = {124, 255, 68, 222, 0, 165};
const float whiteMask[6] = {255, 255, 255, 255, 255, 255};
UIImageView *imageView = [[UIImageView alloc] initWithImage:originalImage];
UIGraphicsBeginImageContext(originalImage.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGImageRef brownRef = CGImageCreateWithMaskingColors(imageView.image.CGImage, brownsMask);
CGImageRef whiteRef = CGImageCreateWithMaskingColors(brownRef, whiteMask);
CGContextDrawImage (context, CGRectMake(0, 0, imageView.image.size.width, imageView.image.size.height), whiteRef);
CGImageRelease(brownRef);
CGImageRelease(whiteRef);
UIImage *doctoredImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[imageView release];
return doctoredImage;
}