У меня уже есть фрагмент кода в приложении для iPhone, который пытается замаскировать белый фон из некоторых изображений JPEG. Сегодня это сообщение по-прежнему хорошо работает на iPhone, но не маскирует его на Apple Watch. Код работает на ожидаемом успешном (не NULL
) пути, но маскирование не выполняется. Даже если я изменю массив maskingColors
на диапазон 0.0, 255.0
для каждого компонента, маскировка не выполняется (это же изменение на iPhone полностью маскирует изображение), когда отображается в WKInterfaceImage
(с setImage:
).CGImageCreateWithMaskingColors не маскирует на Apple Watch в WKInterfaceImage
Изображения 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);
}
Можете ли вы добавить код Watch (то есть, как вы кодируете и устанавливаете изображение)? –
@MikeSwanson Я просто вызываю 'setData' с возвратом опубликованного кода в' WKInterfaceImage' в строке 'WKInterfaceTable'. 'NSData', который я отправляю, он загружается с веб-сайта в виде JPEG из приложения iPhone и переносится на часы в блоке' reply' из 'openParentApplication'. Я также попытался выполнить этап маскировки на телефоне и отправить результат 'UIImagePNGRepresentation()' на часы с теми же результатами. – greg
Исправление: setImage, not setData очевидно. – greg