使用CGContextRef在大尺寸图像上绘制线条后,在iPad中接收内存警告

我使用CGContextRef在UIImage上绘制线条。我的图像像3000×4500这样的分辨率非常大。如果绘制一条线,它不会给我记忆警告,但是如果我绘制多条线,那么会给出内存警告,之后我的应用程序崩溃。试图释放CGContextRef对象,但得到一个错误。 我的代码:

UIGraphicsBeginImageContext(imageView.image.size); [imageView.image drawAtPoint:CGPointMake(0, 0)]; context2=UIGraphicsGetCurrentContext(); for(int i=0; i<kmtaObject.iTotalSize; i++) { kmtaGroup=&kmtaObject.KMTA_GROUP_OBJ[i]; //NSLog(@"Group # = %d",i); for (int j=0; j<kmtaGroup->TotalLines; j++) { lineObject=&kmtaGroup->Line_INFO_OBJ[j]; // NSLog(@"Line # = %d",j); // NSLog(@"*****************"); x0 = lineObject->x0; y0= lineObject->y0; x1= lineObject->x1; y1= lineObject->y1; color= lineObject->Color; lineWidth= lineObject->LinkWidth; lineColor=[self add_colorWithRGBAHexValue:color]; linearColor=lineColor; // Brush width CGContextSetLineWidth(context2, lineWidth); // Line Color CGContextSetStrokeColorWithColor(context2,[linearColor CGColor]); CGContextMoveToPoint(context2, x0, y0); CGContextAddLineToPoint(context2, x1, y1); CGContextStrokePath(context2); } } newImage=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); imageView.image=newImage; 

只是图像将需要54MB的内存(3000 * 4500 * 4)。

由于一次只能显示一部分,所以请考虑将图像分成几个部分,如Apple Maps中使用的地图图块。