У меня есть этот код Objective-C, который извлекает непрозрачный фон фильтра. Я пытаюсь преобразовать его в последнюю версию Swift и иметь ошибки повсюду.Objective-C to Swift Conversion Issue on CGBitmapInfo
-(UIImage*)removeColorFromImage:(UIImage*)sourceImage grayLevel:(int)grayLevel
{
int width = sourceImage.size.width * sourceImage.scale;
int height = sourceImage.size.height * sourceImage.scale;
CGFloat scale = sourceImage.scale;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, width * 4, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedFirst);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), sourceImage.CGImage);
unsigned int *colorData = CGBitmapContextGetData(context);
for (int i = 0; i < width * height; i++)
{
unsigned int color = *colorData;
short a = color & 0xFF;
short r = (color >> 8) & 0xFF;
short g = (color >> 16) & 0xFF;
short b = (color >> 24) & 0xFF;
if ((r == grayLevel) && (g == grayLevel) && (b == grayLevel))
{
a = r = g = b = 0;
*colorData = (unsigned int)(r << 8) + ((unsigned int)(g) << 16) + ((unsigned int)(b) << 24) + ((unsigned int)(a));
}
colorData++;
}
CGImageRef output = CGBitmapContextCreateImage(context);
UIImage* retImage = [UIImage imageWithCGImage:output scale:scale orientation:UIImageOrientationUp];
CGImageRelease(output);
CGContextRelease(context);
return retImage;
}
Когда я конвертирую строку за строкой. Я получил до этого, но возникли проблемы преобразования строки:
var context = CGBitmapContextCreate(nil, width, height, 8, width * 4, colorSpace, CGBitmapInfo(CGImageAlphaInfo.PremultipliedFirst.rawValue))
EDIT ** Это как ошибки выглядят:
Какая ошибка? Похоже, что вам не хватает аргумента инициализации 'rawValue:' для меня ('CGBitmapInfo'). Кроме того, 'context' скорее всего будет константой' let'. – Hamish
Обновлено оригинальное сообщение. – Gizmodo
Почему вы конвертируете в быстрый код? почему бы не использовать объективный код c быстрым использованием моста? https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html – Hasya