У меня есть класс ImageManipulator, который выполняет обрезку, изменение размера и поворот изображений с камеры на iPhone.
На данный момент все работает как положено, но я продолжаю получать несколько огромных всплесков потребления памяти, которые иногда приводят к сбою приложения.
Мне удалось выделить проблему в части кода, где я проверяю текущее свойство ориентации изображения и поворачиваю его соответственно на UIImageOrientationUp
. Затем я получаю изображение из растрового контекста и сохраняю его на диск.
Это то, что я сейчас делаю:
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...
Даже после попытки уменьшить изображение до половины или даже 1/4 размера, я все еще вижу шипы, и мне интересно, есть ли другой / более эффективный способ сделать вращение, как описано выше? 1011 *
Заранее спасибо за ответы.
Рог