NSAffineTransform не хватает памяти
Я использую NSAffineTransform для поворота / отражения NSImage и при использовании больших изображений я сталкиваюсь с ошибкой:
NSImage: Insufficient memory to allocate pixel data buffer of 4496342739800064 bytes
Изображение, которое я здесь преобразовываю, составляет 6,998,487 байт при 4110px x 2735. Нужно ли NSAffineTransform столько памяти для этого преобразования, или я где-то ошибаюсь? Вот мой код поворота:
-(NSImage *)rotateLeft:(NSImage *)img{
NSImage *existingImage = img;
NSSize existingSize;
existingSize.width = existingImage.size.width;
existingSize.height = existingImage.size.height;
NSSize newSize = NSMakeSize(existingSize.height, existingSize.width);
NSImage *rotatedImage = [[NSImage alloc] initWithSize:newSize];
[rotatedImage lockFocus];
NSAffineTransform *rotateTF = [NSAffineTransform transform];
NSPoint centerPoint = NSMakePoint(newSize.width / 2, newSize.height / 2);
[rotateTF translateXBy: centerPoint.x yBy: centerPoint.y];
[rotateTF rotateByDegrees: 90];
[rotateTF translateXBy: -centerPoint.y yBy: -centerPoint.x];
[rotateTF concat];
NSRect r1 = NSMakeRect(0, 0, newSize.height, newSize.width);
[existingImage drawAtPoint:NSMakePoint(0,0)
fromRect:r1
operation:NSCompositeCopy fraction:1.0];
[rotatedImage unlockFocus];
return rotatedImage;
}
Я использую ARC в своем проекте. Заранее спасибо Бен