我有一个绑定到实体属性的NSImageView(在图像中)。这个属性是二进制数据,所以我使用的是Value Transformer(NSKeyedUnarchiveFromData
)。它工作正常,但我希望能够双击图像并在预览中打开此图像。我该如何做到这一点?
答案 0 :(得分:1)
要在预览中打开图像,我很确定您需要先将其保存到磁盘,因为预览会打开文件。您可以使用我编写的NSImage
类别方法来写出图像的JPEG:
@implementation NSImage (DFAdditions)
- (void) saveAsJpegWithPath:(NSString *)filePath {
NSData *imageData = [self TIFFRepresentation];
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:imageData];
CGFloat compressionFactor = 0.8
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:compressionFactor]
forKey:NSImageCompressionFactor];
imageData = [imageRep representationUsingType:NSJPEGFileType properties:imageProps];
[imageData writeToFile:filePath atomically:NO];
}
@end
如果您想要无损TIFF表示,可以将其缩减为单行实现:
- (void) saveAsTiffWithPath:(NSString *)filePath {
[[self TIFFRepresentation] writeToFile:filePath atomically:NO];
}
要在保存后在预览中打开它,我会在这里看一下答案:Cocoa app; open file (pdf) in Preview
它描述了如何打开PDF,但对于任何文件都应该是相同的。此外,我同意对答案的第一个评论:忽略第一行,并使用常规字符串。基本上,请查看NSWorkspace
上的文档。如下面的Rob Keniger所述,您可能需要-openFile:withApplication:
。