Я должен разделить 50 квадратных изображений (600 пикселей x 600 пикселей) на 9 квадратов с равным размером (200x200). Чтобы получить каждую часть, я использую метод:CoreGraphics: массовое разделение изображений
-(UIImage *)getSubImageFrom:(UIImage *)img WithRect:(CGRect)rect
{
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
// translated rectangle for drawing sub image
CGRect drawRect = CGRectMake(-rect.origin.x, -rect.origin.y, img.size.width, img.size.height);
// clip to the bounds of the image context
// not strictly necessary as it will get clipped anyway?
CGContextClipToRect(context, CGRectMake(0, 0, rect.size.width, rect.size.height));
// draw image
[img drawInRect:drawRect];
// grab image
UIImage* subImage = UIGraphicsGetImageFromCurrentImageContext();
CGContextRelease(context);
return subImage;
}
И это было достаточно быстро для меня ... с сегодняшнего дня. Я использовал для загрузки изображений с использованием метода [UIImage imageNamed:]. Этот метод НЕ выполняет автоопределение памяти, пока приложение не получит предупреждение о памяти ... Это было неприемлемо для меня.
Итак, я начал использовать [UIImage imageWithContentsOfFile]. Проблемы с распределением памяти исчезли ... к сожалению, мой метод обрезки (- (UIImage *) getSubImageFrom: (UIImage *) img WithRect: (CGRect) rect) начал работать 20 раз медленнее! Его сейчас несколько часов с тех пор, как я начал искать решение ... без результата. Надеюсь, ты поможешь мне.
С уважением!
PS. Я попытался использовать советы по этому вопросу CGContextDrawImage is EXTREMELY slow after large UIImage drawn into it, без каких-либо результатов.