title: Memory consumption spikes when resizing, rotating and cropping images on iPhone
body: <p>I have an "ImageManipulator" class that performs some cropping, resizing and rotating of camera images on the iPhone.</p>
  
  <p>At the moment, everything works as expected but I keep getting a few huge spikes in memory consumption which occasionally cause the app to crash.</p>
  
  <p>I have managed to isolate the problem to a part of the code where I check for the current image orientation property and rotate it accordingly to <code>UIImageOrientationUp</code>. I then get the image from the bitmap context and save it to disk.</p>
  
  <p>This is currently what I am doing:</p>
  
  <pre><code>CGAffineTransform transform = CGAffineTransformIdentity;
  // Check for orientation and set transform accordingly...
  transform = CGAffineTransformTranslate(transform, self.size.width, 0);
  transform = CGAffineTransformScale(transform, -1, 1);
  
  // Create a bitmap context with the image that was passed so we can perform the rotation
  CGContextRef ctx = CGBitmapContextCreate(NULL, self.size.width, self.size.height,
                                           CGImageGetBitsPerComponent(self.CGImage), 0,
                                           CGImageGetColorSpace(self.CGImage),
                                           CGImageGetBitmapInfo(self.CGImage));
  
  // Rotate the context
  CGContextConcatCTM(ctx, transform);
  
  // Draw the image into the context
  CGContextDrawImage(ctx, CGRectMake(0,0,self.size.height,self.size.width), self.CGImage);
  
  // Grab the bitmap context and save it to the disk...
  </code></pre>
  
  <p>Even after trying to scale the image down to half or even 1/4 of the size, I am still seeing the spikes to I am wondering if there is a different / more efficient way to get the rotation done as above?</p>
  
  <p>Thanks in advance for the replies.
  Rog</p>