2009-07-03 2 views

ответ

46

NSImage - абстрактный тип данных, который может представлять множество различных типов изображений, а также множество изображений изображения. Это часто полезно, когда фактический тип изображения не важен для того, что вы пытаетесь сделать. Это также единственный класс изображений, который AppKit примет в своих API (NSImageView и т. Д.).

CGImage может представлять только растровые изображения. Если вам нужно опуститься и испортить фактические данные растрового изображения, CGImage - подходящий тип. Операции в CoreGraphics, такие как режимы наложения и маскировка, требуют CGImageRefs. CGImageRefs можно использовать для создания NSBitmapImageRefs, который затем может быть добавлен в NSImage.

Я думаю, что документация описывает CIImage лучше:

Хотя объект CIImage имеет данные изображения, связанные с ним, это не образ. Вы можете представить объект CIImage как образ «рецепт». Объект CIImage имеет всю информацию, необходимую для создания изображения, но Core Image фактически не отображает изображение, пока ему не говорят об этом. Этот метод «ленивой оценки» позволяет Core Image работать максимально эффективно.

CIImages являются тип необходимо использовать различные GPU-оптимизированные фильтры основного изображения, которые поставляются с Mac OS X, но, как CGImageRefs, они также могут быть преобразованы в NSBitmapImageReps.

Смежные вопросы