I have an NSImage pointer from a platform SDK, and I need to load it into Qt’s QImage class. To make things easier, I can create a QImage from a CGImageRef by using QPixmap as an intermediate format, like this:
CGImageRef myImage = // ... get a CGImageRef somehow.
QImage img = QPixmap::fromMacCGImageRef(myImage).toImage();
However, I cannot find a way to convert from an NSImage to a CGImageRef. Several other people have had the same problem, but I have yet to find a solution.
There is the CGImageForProposedRect method, but I can’t seem to get it to work. I’m currently trying this (img is my NSImage ptr):
CGImageRef ir = [img CGImageFirProposedRect:0:0:0];
Any ideas?
NSImageis a high level image wrapper that might contain more than one image (thumbnails, different resolutions, vector representations, …) and does a lot of caching magic. ACGImageon the other hand is one plain bitmap image. SinceNSImageis a so much richer object, there’s no easy way of converting in between the two.To get a
CGImageReffrom an NSImage you have some options:NSBitmapImageRepfrom theNSImage(using[img representations]) and get theCGImagefrom that.CGBitmapContextCreate), draw the image into that, and create aCGImagefrom this context.CGImagedirectly from theNSImage:[img CGImageForProposedRect:NULL context:nil hints:nil]