Kamiliy 2024-01-14 22:27 采纳率: 50%
浏览 6

C++ DXGI获取3440x1440图片

QT5.15.2 msvc
我在使用DXGI进行截屏后转为QImage并保存时发现在3440x1440的像素下图片保存出来是错乱的,行不对位的图片。也在其他地方下载了demo测试,也发现demo的代码截图出来的图片是同样的情况?请问是需要做什么转换还是设置吗?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-15 08:23
    关注

    【以下回答由 GPT 生成】

    问题分析

    根据问题描述,您想要在C++中使用DXGI获取3440x1440分辨率的图片,并将其转换为QImage进行保存。您在使用QT5.15.2 msvc时遇到了保存图片错乱的问题,而且在下载的demo中也遇到了相同的问题。您想知道是否需要进行特定的转换或设置来解决这个问题。

    解决方案

    根据您的描述,可能是由于图像的排列顺序或颜色格式导致的问题。下面是一些可能的解决方案:

    1. 确保使用正确的颜色格式:根据您的描述,可能是颜色格式和保存图像时使用的格式不匹配导致的问题。您可以检查DXGI获取的图像格式,并确保在保存图像时使用相同的格式。请参考以下代码片段:
    // 使用DXGI获取3440x1440分辨率的图像
    // ...
    
    // 确保使用正确的颜色格式
    DXGI_FORMAT format = GetImageFormat(); // 获取图像格式
    // 保存图像时使用相同的格式
    QImage image(pData, width, height, QImage::Format_ARGB32); // 使用ARGB32格式保存图像
    image.save("image.bmp"); // 保存图像为BMP格式
    
    1. 考虑调整图像的排列顺序:如果颜色格式没有问题,那么可能是图像的排列顺序导致的问题。您可以尝试调整图像的排列顺序来解决这个问题。例如,如果图像以不正确的方式呈现或颠倒了红蓝通道,您可以尝试调整图像的排列顺序来修复它。以下是一个可能的例子:
    // 使用DXGI获取3440x1440分辨率的图像
    // ...
    
    // 调整图像的排列顺序
    AdjustImageOrder(pData, width, height); // 调整图像的排列顺序
    // 保存图像时使用正确的颜色格式
    QImage image(pData, width, height, QImage::Format_ARGB32); // 使用ARGB32格式保存图像
    image.save("image.bmp"); // 保存图像为BMP格式
    

    请注意,上述代码片段中的GetImageFormat()AdjustImageOrder()函数需要根据您的具体需求和图像数据的格式进行相应的实现。此外,您还可以根据需要进行其他设置和优化。

    如果上述解决方案都不能解决您的问题,可能涉及到更具体的实现和调试。在这种情况下,您可能需要进一步分析和调试问题,并参考DXGI和QT的相关文档、示例代码和社区讨论来获取更多帮助。

    希望这些信息对您有所帮助!如果您有任何疑问,请随时提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月14日

悬赏问题

  • ¥15 科来模拟ARP欺骗困惑求解
  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)