我必须将 50 个正方形图像(600 像素 x 600 像素)分成 9 个相同大小(200x200)的正方形部分。要获得每个部分,我使用方法:
-(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 after large UIImage draw into it,没有任何结果。