Записать NSImage в файл - PullRequest
       351

Записать NSImage в файл

0 голосов
/ 31 июля 2010

У меня есть NSImage из NSImage *myImage = [[NSBitmapImageRep alloc] initWithFocusedViewRect:[outputView bounds]];, и мне нужно сохранить его в файл.Я не смог найти ничего о сохранении NSImage в любом формате.Кто-нибудь делал это?Это вообще возможно?

Спасибо

Ответы [ 3 ]

2 голосов
/ 31 июля 2010

То, как вы говорите, что создаете NSImage, не имеет смысла. Вы показываете, как создать NSBitmapImageRep, а не NSImage.

Прежде чем сохранить его в файл, вы конвертируете в NSData. Существует метод NSImage для преобразования в данные TIFF, а также метод NSBitmapImageRep для преобразования в данные в нескольких форматах.

1 голос
/ 31 июля 2010

Если вы создаете моментальный снимок фактического вида (в отличие от изображения, на котором вы заблокировали фокус), то альтернативой для создания представителя растрового изображения будет запросить представление для данных PDF желаемого прямоугольника . Это будет векторный, а не растровый (кроме случаев, когда само представление рисует изображение), которое будет лучше масштабироваться до более высоких разрешений. Затем вы должны записать эти данные в файл так же, как и любые другие данные.

1 голос
/ 31 июля 2010

Имея NSBitmapImageRep (как указал JWWalker, этот код не создает экземпляр NSImage), вы можете запросить у представителя изображения версию CGImage для себя, а затем создать CGImageDestination для записи этого изображения в файл.Это может быть более эффективным, чем получение объекта данных (который будет хранить растровые данные в памяти) и предоставляет больше возможностей.

...