Я пытаюсь получить CGContextRef из UIImage. Всегда мой CGContextRef равен 0x0 в отладчике.Почему я не получаю CGContextRef
Вот код:
NSString *movName = imgName;
NSString *path = [[NSBundle mainBundle] pathForResource:movName ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
CGImageRef imageRef = [image CGImage];
CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);
CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef);
CGContextRef bitmap = CGBitmapContextCreate(NULL,
100,
100,
CGImageGetBitsPerComponent(imageRef),
CGImageGetBytesPerRow(imageRef),
colorSpaceInfo,
bitmapInfo);
спасибо за ответы
Хороший вопрос ... Я стараюсь, потому что мое изображение UIImage *, которое я царапаю с диска, имеет размер 768x944 (и это размер, который я должен показать на экране), и из-за этого большого у меня проблемы с памятью. Я пробую много обходных решений и прихожу к этому с растровым изображением. Может быть, у вас есть идея о CGLayer и его использовании memeory? – xnz
Похоже, что проблема заключается в том, что у вас ложь в другом месте. Любое текущее устройство Apple должно иметь возможность обрабатывать и отображать изображение 768x944 без особых трудностей. Приведенный выше код пытается создать пустую растровую карту размером 100x100, и я не думаю, что вы тоже этого хотите. Даже если вы изменили размер. UIImage использует CGImage за кулисами, поэтому вы все еще вернулись туда, где вы начали. Я бы посмотрел остальную часть вашей программы и посмотрел, может ли быть другое решение. – fbrereto
@fbrereto: 100x100 предназначен только для тестирования, но theCGBitmapContextCreate() возвращает мне NULL. И да, возможно загрузить и отобразить изображение с 768x944, но это увеличивает память намного больше, чем изображение, скажем, 50x50. Если я загружаю и отпускаю 10 (или более) изображений, моя память идет на колени, потому что кажется, что релиз изображения никогда не освобождал память. – xnz