白い背景を持つ UIImage (ユーザー描画によって生成されたもの) があります。この画像の白い部分を透明にしたいです。また、これをPNGファイルに保存したいと思います。
フォーラムを見回しましたが、画像を正しくマスクする方法がわかりません。誰もこれを試したことがありますか?
ありがとう。
白い背景を持つ UIImage (ユーザー描画によって生成されたもの) があります。この画像の白い部分を透明にしたいです。また、これをPNGファイルに保存したいと思います。
フォーラムを見回しましたが、画像を正しくマスクする方法がわかりません。誰もこれを試したことがありますか?
ありがとう。
このようなものを試してみてください...
CGImageRef myMaskedImage = [myImage CGImage];
const float whiteMask[6] = { 255,255,255, 255,255,255 };
CGImageRef myColorMaskedImage = CGImageCreateWithMaskingColors(image, whiteMask);
CGDataProviderRef provider;
CGImageRef myPngImage = CGImageCreateWithPNGDataProvider(provider, NULL, true, kCGRenderingIntentDefault);
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt: 72], kCGImagePropertyDPIHeight, [NSNumber numberWithInt: 72], kCGImagePropertyDPIWidth, nil];
CGImageDestinationRef destRef = CGImageDestinationCreateWithURL ((CFURLRef)outPath, (CFStringRef)@"image.png" , 1, NULL);
CGImageDestinationAddImage(destRef, myPngImage, (CFDictionaryRef)options);
CGImageDestinationFinalize(destRef);
CGRelease(destRef);
CGImageRelease(myColorMaskedImage);
CGImageRelease(myPngImage);
生データを取得し、白いピクセルを探し、それらのピクセルのアルファを変更し、新しいNSDataオブジェクトに保存してから、それをPNGに変換する必要があります。
難しいことではありませんが、些細なことではありません。
最初の UIImage を完全に透明にしてから、その背後に別の UIImageView を完全に白くすることができます。