2012-02-01 14 views
24

Estoy intentando procesar una imagen en CoreGraphics y luego devuelvo la imagen procesada a NSImage para guardarla y mostrarla. Tengo amplios recursos sobre cómo realizar estas funciones en iOS pero los métodos auxiliares parecen faltar en NSImage. En iOS, el método de clase es imageWithCGImage:, ¿cómo se puede hacer esto en Mac OS?Obteniendo NSImage de CGImageRef

Respuesta

42

El método de coincidencia en NSImage es initWithCGImage:size:.

El segundo argumento toma el tamaño de la imagen en puntos. El factor entre el tamaño en píxeles (de CGImage) y el tamaño en puntos es el factor de escala. Entonces, por ejemplo, si tiene una CGImage de 100 × 100px y pasa un tamaño de (NSSize){ 50.0, 50.0 }, la imagen tendrá 50 puntos de tamaño y doble resolución.

Normalmente debería simplemente pasar el tamaño en píxeles (desde CGImage) como el tamaño en puntos. Para manejar múltiples factores de escala, es mejor usar un único NSImage con múltiples NSImageReps, como lo que obtiene de -[NSWorkspace iconForFileType:] para la mayoría de los tipos o de crear un NSImage desde un archivo .icns típico.

+41

NSZeroSize es la abreviatura de "mismo tamaño que CGImage". – Ken

+0

@Ken ¡Gracias, Ken, es información clave! –