很久以前,我的 iPhone 应用程序中就有一段代码试图掩盖一些 JPEG 图像的白色背景。今天,这条消息在 iPhone 上仍然有效,但在 Apple Watch 上没有任何掩饰。代码在预期的成功(非NULL
)路径上运行,但不执行屏蔽。即使我将maskingColors
数组更改为每个组件的范围,当显示在(with )0.0, 255.0
中时,也不会执行屏蔽(iPhone 上的相同更改完全屏蔽了图像)。WKInterfaceImage
setImage:
带有存储在资产目录中的 alpha 通道的 PNG 图像似乎在 Apple Watch 上以WKInterfaceImage
.
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);
}