我有一个来自平台 SDK 的 NSImage 指针,我需要将它加载到 Qt 的 QImage 类中。为了简化操作,我可以使用 QPixmap 作为中间格式从 CGImageRef 创建 QImage,如下所示:
CGImageRef myImage = // ... get a CGImageRef somehow.
QImage img = QPixmap::fromMacCGImageRef(myImage).toImage();
但是,我找不到将 NSImage 转换为 CGImageRef 的方法。 Several other people遇到了同样的问题,但我还没有找到解决方案。
有 CGImageForProposedRect
方法,但我似乎无法让它工作。我目前正在尝试这个(img
是我的 NSImage ptr):
CGImageRef ir = [img CGImageFirProposedRect:0:0:0];
有什么想法吗?
最佳答案
NSImage
是一个高级图像包装器,它可能包含多个图像(缩略图、不同的分辨率、 vector 表示,...)并执行大量缓存操作。另一方面,CGImage
是一个普通的位图图像。由于 NSImage
是一个非常丰富的对象,因此没有简单的方法在两者之间进行转换。
要从 NSImage 获取 CGImageRef
,您有一些选择:
- 从
NSImage
中手动选择一个NSBitmapImageRep
(使用[img representations]
)并从中获取CGImage
- 设置图形上下文 (
CGBitmapContextCreate
),将图像绘制到其中,并从该上下文创建一个CGImage
。 - 使用新的 Snow Leopard API 直接从
NSImage
创建CGImage
:[img CGImageForProposedRect:NULL context:nil hints:nil]
关于c++ - 将 NSImage 加载到 QPixmap 或 QImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468811/