如何在预览中打开图像,双击NSImageView?

时间:2011-12-13 20:08:54

标签: cocoa image core-data

我有一个绑定到实体属性的NSImageView(在图像中)。这个属性是二进制数据,所以我使用的是Value Transformer(NSKeyedUnarchiveFromData)。它工作正常,但我希望能够双击图像并在预览中打开此图像。我该如何做到这一点?

1 个答案:

答案 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: