NSAffineTransform内存不足

时间:2012-05-02 09:17:27

标签: cocoa memory 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。 提前谢谢,Ben

0 个答案:

没有答案