gpt4 book ai didi

ios - CGImageCreateWithMaskingColors 不会在 WKInterfaceImage 中的 Apple Watch 上进行 mask

转载 作者:行者123 更新时间:2023-11-29 02:05:09 26 4
gpt4 key购买 nike

很久以来,我的 iPhone 应用程序中就有一段代码试图屏蔽某些 JPEG 图片的白色背景。今天,这条消息在 iPhone 上仍然有效,但在 Apple Watch 上没有任何屏蔽。代码在预期的成功(非 NULL)路径上运行,但不执行任何屏蔽。即使我将每个组件的 maskingColors 数组更改为 0.0, 255.0 范围,当显示在WKInterfaceImage(使用 setImage:)。

Assets 目录中存储的具有 alpha channel 的 PNG 图像似乎可以在 WKInterfaceImage 中正确显示在 Apple Watch 上。

CGImageCreateWithMaskingColors 对 Apple Watch 不安全吗?

- (UIImage *)imageWithBackgroundRemovedWithImageData:(NSData *)imageData
{
CGImageRef originalImage = [UIImage imageWithData:imageData].CGImage;

/* Only attempt for RGB images */
if (CGColorSpaceGetModel(CGImageGetColorSpace(originalImage)) != kCGColorSpaceModelRGB)
return ([UIImage imageWithData:imageData]);

/* Mask 10 shades of "white" */
static const CGFloat maskingColors[] = {245.0, 255.0, 245.0, 255.0, 245.0, 255.0};
CGImageRef transparentImageRef = CGImageCreateWithMaskingColors(originalImage, maskingColors);
if (transparentImageRef == NULL)
return ([UIImage imageWithData:imageData]);

UIImage *transparentImage = [UIImage imageWithCGImage:transparentImageRef];
CGImageRelease(transparentImageRef);
return (transparentImage);
}

最佳答案

这似乎是自 iOS 7 以来就存在的问题。有关更多详细信息,请参阅此帖子:CGImageCreateWithMaskingColors Doesn't Work with iOS7

使用该逻辑,我已按如下方式修改您的代码以产生预期结果:

UIGraphicsBeginImageContextWithOptions(transparentImage.size, NO, 1.0);
[transparentImage drawInRect:CGRectMake(0, 0, transparentImage.size.width, transparentImage.size.height)];
UIImage *anotherRendition = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return (anotherRendition);

关于ios - CGImageCreateWithMaskingColors 不会在 WKInterfaceImage 中的 Apple Watch 上进行 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859401/

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