Как открыть изображение в Preview, дважды щелкнув NSImageView? - PullRequest
1 голос
/ 14 декабря 2011

У меня есть NSImageView (в лунке изображения), связанный с атрибутом сущности.Этот атрибут является двоичными данными, поэтому я использую Value Transformer (NSKeyedUnarchiveFromData).Это работает правильно, но я хочу иметь возможность дважды щелкнуть изображение и открыть это изображение в окне предварительного просмотра.Как мне это сделать?

1 Ответ

1 голос
/ 14 декабря 2011

Чтобы открыть изображение в Preview, я уверен, что вам нужно сначала сохранить его на диск, так как Preview открывает files . Вы можете использовать этот метод категории 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];
}

Чтобы открыть его в Preview после того, как вы его сохранили, я бы посмотрел на ответ здесь: Какао-приложение; открыть файл (pdf) в Preview

Описывает, как открыть PDF, но оно должно быть одинаковым для любого файла. Кроме того, я согласен с первым комментарием к ответу: игнорируйте первую строку и используйте обычную строку. В основном, посмотрите на документацию по NSWorkspace. Как упомянуто Робом Кенигером ниже, вы, вероятно, хотите -openFile:withApplication:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...