CGContextDrawImage возвращает неверный доступ - PullRequest
3 голосов
/ 24 марта 2010

Я пытался смешать два UIImage в течение приблизительно 2 дней, и я получаю некоторые ошибки BAD_ACCESS.Прежде всего, у меня есть два изображения, которые имеют одинаковую ориентацию, в основном я использую CoreGraphics для смешивания.

Одна любопытная деталь, каждый раз, когда я изменяю код, в первый раз, когда я компилирую и запускаю егона устройстве я могу делать все, что хочу, без каких-либо проблем.Как только я перезапускаю приложение, я получаю сообщение об ошибке и программа закрывается.

Может кто-нибудь подсказать мне?Я попытался получить доступ к размерам baseImage динамически, но он также дает мне плохой доступ.

Вот фрагмент того, как я делаю смешивание.

 UIGraphicsBeginImageContext(CGSizeMake(320, 480));
 CGContextRef context = UIGraphicsGetCurrentContext();

 CGContextTranslateCTM(context, 0, 480);
 CGContextScaleCTM(context, 1.0, -1.0);

 CGContextDrawImage(context, rect, [baseImage CGImage]);
 CGContextSetBlendMode(context, kCGBlendModeOverlay);
 CGContextDrawImage(context, rect, [tmpImage CGImage]);

 [transformationView setImage:UIGraphicsGetImageFromCurrentImageContext()];
 UIGraphicsEndImageContext();

Дополнение: иногда оно начинает работатьотлично, без проблем.Иногда это просто накладывается и не смешивается.Другие это сбивает iPhone.

1 Ответ

4 голосов
/ 24 марта 2010

Очевидно, что основной проблемой было редактирование одного и того же CGImage каждый раз. Чтобы избавиться от этого, я использовал

    CGImageCreateCopy(sourceImage.CGImage);

Прямо сейчас я больше не получаю сбои. Если кто-то может дать лучшее объяснение этому, я ценю.

Привет

...