2009-07-03 1 views

risposta

46

NSImage è un tipo di dati astratto che può rappresentare molti tipi diversi di immagini, oltre a rappresentazioni multiple di un'immagine. È spesso utile quando il tipo effettivo di immagine non è importante per ciò che stai cercando di fare. È anche l'unica classe di immagine che AppKit accetterà nelle sue API (NSImageView e così via).

CGImage può rappresentare solo bitmap. Se è necessario scendere e sporcare con i dati bitmap effettivi, CGImage è un tipo appropriato da utilizzare. Le operazioni in CoreGraphics, come le modalità di fusione e il mascheramento, richiedono CGImageRefs. CGImageRefs può essere utilizzato per creare NSBitmapImageRefs, che può quindi essere aggiunto a un NSImage.

penso che la documentazione descrive un CIImage migliore:

Anche se un oggetto CIImage ha dati immagine ad esso associati, non è un'immagine. Puoi pensare a un oggetto CIImage come a una "ricetta" di immagine. Un oggetto CIImage ha tutte le informazioni necessarie per produrre un'immagine, ma Core Image non esegue il rendering di un'immagine finché non gli viene detto di farlo. Questo metodo di "valutazione lenta" consente a Core Image di funzionare nel modo più efficiente possibile.

CIImages sono il tipo necessaria per utilizzare i vari filtri Core Image GPU ottimizzata che vengono con Mac OS X, ma, come CGImageRefs, possono anche essere convertiti in NSBitmapImageReps.