別の画像をマスクとして渡して画像をマスクしたい。画像をマスクすることはできますが、結果の画像は見栄えがよくありません。縁がギザギザになっています。
問題は網膜グラフィックスに関連していると思います。2 つの画像のスケール プロパティは、次のように異なります。
- マスクしたい画像のスケール値は 1 です。通常、この画像の解像度は 1000x1000 ピクセルを超えます。
- 結果の画像(白黒のみの画像)が必要な画像のスケール値は2です。この画像は通常、解像度300x300ピクセルです。
結果のイメージのスケール値は 1 です。
私が使用しているコードは次のとおりです。
+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
CGImageRelease(mask);
UIImage *maskedImage = [UIImage imageWithCGImage:masked ];
CGImageRelease(masked);
return maskedImage;
}
網膜スケールに従うマスクされた画像を取得するにはどうすればよいですか?