我试图绕垂直轴旋转NSImage,保存结果。主要目的是生成具有不同旋转度的相同图像的帧阵列。我需要让该数组分别修改每个帧。单帧的期望结果如下:
到目前为止,我尝试使用CATransform3DRotate制作单个旋转的NSImage,但我无法以任何方式将此变换应用于NSImage。我尝试将CATransform3DRotate应用到新创建的CALayer,甚至是一个专门创建的视图层,我能得到的最好的是和以前一样的图片。
CATransform3D t = CATransform3DRotate(CATransform3DIdentity, (60 * M_PI / 180), 0, 1, 0);
CALayer *layer = [CALayer layer];
[layer setFrame: imageRect];
[layer setContents:image];
[layer setTransform:t];
NSImage * newImage = [[NSImage alloc] initWithSize:layer.bounds.size];
[newImage lockFocus];
[layer renderInContext:[NSGraphicsContext currentContext].CGContext];
[newImage unlockFocus];
此代码导致newImage与非旋转图像相同。我也尝试了其他一些方法,但都没有成功。
也许有更简单的方法来实现我的目标(生成相同NSImage的旋转帧数组),但我不知道,它是什么。
答案 0 :(得分:0)
NSImage对象无法旋转。您需要旋转视图或图层,然后将视图/图层的内容保存为图像。
有关如何将视图另存为图片,请参阅Saving an NSView to a png file?。