Pregunta

¿Hay una manera fácil de hacer esto que funciona en el 10,5?

En el 10,6 puedo usar NSImage CGImageForProposedRect: contexto NULL: consejos NULL: NULL

Si no estoy usando 1b imágenes en blanco y negro (como TIFF Grupo 4), puedo usar mapas de bits, pero cgbitmaps parecen no de esa configuración ... ¿Hay una manera general de hacer esto?

Tengo que hacer esto porque tengo una IKImageView que sólo parece querer añadir CGImages, pero todo lo que tengo son NSImages. Actualmente, estoy usando un setImage privada: (NSImage *) método que yo realmente realmente preferiría no estar usando ...

¿Fue útil?

Solución

Encontrados la siguiente solución en esta página :

NSImage* someImage;
// create the image somehow, load from file, draw into it...
CGImageSourceRef source;

source = CGImageSourceCreateWithData((CFDataRef)[someImage TIFFRepresentation], NULL);
CGImageRef maskRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

Todos los métodos parecen ser 10.4+ por lo que debe estar bien.

Otros consejos

[Este es el camino más largo. Sólo debe hacer esto si todavía está apoyando una versión antigua de OS X. Si puede requerir 10.6 o posterior, sólo tiene que utilizar el CGImage método su lugar.]

  1. Crea un CGBitmapContext.
  2. Crea una NSGraphicsContext para el contexto de mapa de bits
  3. conjunto del contexto gráfico como contexto actual
  4. dibujar la imagen
  5. Crea el CGImage de los contenidos del contexto de mapa de bits.
  6. Versión del contexto de mapa de bits.

Como de Snow Leopard, sólo puede pedir la imagen para crear un CGImage para usted , mediante el envío de un mensaje al NSImage CGImageForProposedRect:context:hints:

Aquí hay una respuesta más detallada para el uso de - CGImageForProposedRect:context:hints::

NSImage *image = [NSImage imageNamed:@"image.jpg"];

NSRect imageRect = NSMakeRect(0, 0, image.size.width, image.size.height);

CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:NULL hints:nil];

Sólo hizo esto utilizando CGImageForProposedRect:context:hints: ...

NSImage *image; // an image
NSGraphicsContext *context = [NSGraphicsContext currentContext];
CGRect imageCGRect = CGRectMake(0, 0, image.size.width, image.size.height);
NSRect imageRect = NSRectFromCGRect(imageCGRect);
CGImageRef imageRef = [image CGImageForProposedRect:&imageRect context:context hints:nil];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top