gpt4 book ai didi

ios - 从 UIImage 中移除 alpha channel

转载 作者:可可西里 更新时间:2023-11-01 05:00:30 25 4
gpt4 key购买 nike

我使用以下方法从文件系统中获取解压后的 uiimage。然而,当我打开颜色混合层时,UIImageView 被着色为红色,即使 UIImageView 设置为不透明。

文件系统上的图像没有 alpha channel 。我尝试设置 CGContextSetAlpha(bitmapContext, 1),但仍然有混合层。

有人知道如何在使用 CGContextDrawImage 时删除 alpha channel 吗?

- (UIImage *)decompressedImage
{
CGImageRef imageRef = self.CGImage;
CGRect rect = CGRectMake(0.f, 0.f, CGImageGetWidth(imageRef), CGImageGetHeight(imageRef));
CGContextRef bitmapContext = CGBitmapContextCreate(NULL,
rect.size.width,
rect.size.height,
CGImageGetBitsPerComponent(imageRef),
CGImageGetBytesPerRow(imageRef),
CGImageGetColorSpace(imageRef),
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little
);
// kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little are the bit flags required
// so that the main thread doesn't have any conversions to do.

CGContextDrawImage(bitmapContext, rect, imageRef);

CGImageRef decompressedImageRef = CGBitmapContextCreateImage(bitmapContext);
UIImage* decompressedImage = [UIImage imageWithCGImage:decompressedImageRef
scale:[[UIScreen mainScreen] scale]
orientation:UIImageOrientationUp];
CGImageRelease(decompressedImageRef);
CGContextRelease(bitmapContext);

return decompressedImage;
}

最佳答案

在上下文的选项中,尝试选项

kCGImageAlphaNoneSkipLast

kCGImageAlphaNoneSkipFirst

取决于您使用的是 RGBA 还是 ARGB

即,

CGContextRef bitmapContext = CGBitmapContextCreate(NULL,
rect.size.width,
rect.size.height,
CGImageGetBitsPerComponent(imageRef),
CGImageGetBytesPerRow(imageRef),
CGImageGetColorSpace(imageRef),
kCGImageAlphaNoneSkipLast | kCGBitmapByteOrder32Little
);

关于ios - 从 UIImage 中移除 alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21416358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com