You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Qt 6中实现CGImageRef到QPixmap的转换?

在Qt 6中实现CGImageRef到QPixmap的转换

由于Qt 6移除了QtMacExtras模块,原QtMac::fromCGImageRef函数无法再使用,你可以通过Cocoa原生API+Qt的跨平台图像转换接口来实现需求,具体方案如下:

实现思路

先将CGImageRef转换为Cocoa的NSImage,再利用Qt提供的QImage::fromNSImage接口将NSImage转为QImage,最后通过QPixmap::fromImage得到目标QPixmap。

具体代码实现

#include <AppKit/NSImage.h>
#include <QtGui/QImage>
#include <QtGui/QPixmap>

QPixmap cgImageToQPixmap(CGImageRef cgImage) {
    if (!cgImage)
        return QPixmap();

    // 用CGImageRef创建NSImage
    NSImage *nsImage = [[NSImage alloc] initWithCGImage:cgImage size:NSZeroSize];
    if (!nsImage)
        return QPixmap();

    // 将NSImage转换为QImage
    QImage qImage = QImage::fromNSImage(nsImage);
    [nsImage release]; // 非ARC环境下手动释放内存,ARC环境可省略

    // 转换为QPixmap并返回
    return QPixmap::fromImage(qImage);
}

注意事项

  • 确保项目已链接AppKit框架(Qt Creator的macOS项目默认已配置)。
  • 若项目使用ARC(自动引用计数),需移除[nsImage release];语句。
  • 该方案会自动适配Retina屏幕,转换后的图像保留正确的像素密度信息。

内容的提问来源于stack exchange,提问作者Bri Bri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:31:02