私はアルファチャンネル付き300 x 400 px PNG-24を持っています。それは約140kbです。私はその一部を覆い隠したいので、PNG-24として別の300 x 400の画像を作成しましたが、黒、灰色、白だけでアルファチャンネルはありませんでした。イメージマスクがイメージを黒くしてしまうのはなぜですか?マスクは白です。
奇妙なことです:マスクが黒色の場合、画像は元のままです。透明性がありません。しかし、マスクが白の場合、画像は黒く黒くなります。透明性がありません。
50 x 50ピクセルなどの非常に小さな画像では部分的に機能します。この機能に何が間違っているのでしょうか?
+ (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 theImage = image.CGImage;
CGImageRef masked = CGImageCreateWithMask(theImage, mask);
return [UIImage imageWithCGImage:masked];
}
背景がオレンジ色で、この色が輝きます。イメージを保持するUIImageViewは、clearColor/transparencyとopaque = NOに設定されます。
ありがとうございます!保存するときに透明であるかどうかをチェックしても、透明なピクセルがないと、私の愚かなグラフィックスアプリケーションがアルファチャンネルを作成しないことがわかりました。それが問題でした! – Thanks