Вопрос

Есть ли простой способ сделать это, который работает в версии 10.5?

В версии 10.6 я могу использовать NSImage CGImageForProposedRect:НУЛЕВОЙ контекст:НУЛЕВЫЕ подсказки:НОЛЬ

Если я не использую черно-белые изображения размером 1 б (например, Group 4 TIFF), я могу использовать растровые изображения, но cgbitmaps, похоже, не нравится такая настройка...Есть ли общий способ сделать это?

Мне нужно это сделать, потому что у меня есть IKImageView, который, кажется, хочет добавлять только CGImages, но все, что у меня есть, - это NSImages.В настоящее время я использую частный метод setImage: (NSImage *), который я БЫ ДЕЙСТВИТЕЛЬНО предпочел не использовать...

Это было полезно?

Решение

Нашел следующее решение на эта страница:

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);

Все методы, кажется, 10.4 +, так что у вас все должно быть в порядке.

Другие советы

[Это долгий путь в обход.Вам следует делать это только в том случае, если вы все еще поддерживаете старую версию OS X.Если вам может потребоваться версия 10.6 или более поздняя, просто используйте CGImage способ вместо этого.]

  1. Создайте CGBitmapContext.
  2. Создайте NSGraphicsContext для контекста растрового изображения.
  3. Установите графический контекст в качестве текущего контекста.
  4. Нарисуйте изображение.
  5. Создайте CGImage из содержимого контекста растрового изображения.
  6. Освободите контекст растрового изображения.

Что касается Snow Leopard, вы можете просто попросите изображение создать для вас CGImage, отправив NSImage a CGImageForProposedRect:context:hints: Сообщение.

Вот более подробный ответ на использование - 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];

Просто сделал это, используя 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];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top