gpt4 book ai didi

c++ - 将 NSImage 加载到 QPixmap 或 QImage

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:03 28 4
gpt4 key购买 nike

我有一个来自平台 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,您有一些选择:

  1. NSImage 中手动选择一个 NSBitmapImageRep(使用 [img representations])并从中获取 CGImage
  2. 设置图形上下文 (CGBitmapContextCreate),将图像绘制到其中,并从该上下文创建一个 CGImage
  3. 使用新的 Snow Leopard API 直接从 NSImage 创建 CGImage:[img CGImageForProposedRect:NULL context:nil hints:nil]

关于c++ - 将 NSImage 加载到 QPixmap 或 QImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468811/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com