【发布时间】:2015-01-19 22:12:17
【问题描述】:
我正在使用以下代码翻转(旋转 180 度)NSImage。
但是新图像在保存到磁盘时是原始图像的两倍大小(MB,而不是尺寸)。我希望它与原版大致相同。我怎样才能做到这一点?
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:[[_imageView image] TIFFRepresentation]];
NSImage *img = [[NSImage alloc] initWithSize:NSMakeSize(imageRep.pixelsWide, imageRep.pixelsHigh)];
[img lockFocus];
NSAffineTransform *rotator = [NSAffineTransform transform];
[rotator translateXBy:imageRep.pixelsWide yBy:imageRep.pixelsHigh];
[rotator scaleXBy:-1 yBy:-1];
[rotator concat];
[imageRep drawInRect:NSMakeRect(0, 0, imageRep.pixelsWide, imageRep.pixelsHigh)];
[img unlockFocus];
我用来将图像保存到磁盘的代码:
[[NSFileManager defaultManager] createFileAtPath:path contents:[img TIFFRepresentation] attributes:nil];
提前致谢!
【问题讨论】:
-
TIFF 有图像压缩选项,也许这就是问题所在。
-
源图像也是TIFF吗? TIFF 是一种漂亮的图像格式,但与 JPEG 或 PNG 相比非常冗长,所以这可能是问题所在。
标签: objective-c cocoa nsimage image-rotation nsaffinetransform