Je dois séparer 50 images carrées (600px x 600px) en 9 parties carrées de taille égale (200x200). Pour obtenir chaque partie j'utilise la méthode:CoreGraphics: Partition d'image de masse
-(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;
}
Et c'était assez rapide pour moi ... depuis aujourd'hui. J'avais l'habitude de charger des images en utilisant la méthode [UIImage imageNamed:]. Cette méthode ne libère PAS la mémoire jusqu'à ce que l'application obtienne un avertissement de mémoire ... Ce qui était inacceptable pour moi. J'ai donc commencé à utiliser [UIImage imageWithContentsOfFile]. Problèmes avec l'allocation de mémoire ont disparu ... malheureusement ma méthode de culture (- (UIImage *) getSubImageFrom: (UIImage *) img WithRect: (CGRect) rect) a commencé à fonctionner 20 fois plus lent! C'est maintenant plusieurs heures depuis que j'ai commencé à chercher une solution ... sans résultat. J'espère que tu peux m'aider.
Meilleures salutations!
PS. J'ai essayé d'utiliser des conseils de cette question CGContextDrawImage is EXTREMELY slow after large UIImage drawn into it, sans aucun résultat.