【问题标题】:Howe can I retrieve the correct image with correct alpha channel from QMimeData如何从 QMimeData 检索具有正确 alpha 通道的正确图像
【发布时间】:2009-09-14 20:52:53
【问题描述】:

如果我们将带有 alpha 通道的图像拖放或复制到应用程序/剪贴板,它会丢失使用 Qt 的 alpha 通道。 使用: QImage clipImage = pMimeData->imageData().value();

为我们提供了黑色背景的 32 位图像,它应该是透明的。图像的格式始终为 QImage::Format_RGB32。我试图将它转换为 QImage::Format_ARGB32_Premultiplied 并提取 alpha 通道,但我收到的 alpha 通道只有黑色背景,它覆盖了图像的整个部分。如何从 QMimeData 中检索具有正确 alpha 通道的正确图像。

干杯 德让

【问题讨论】:

    标签: qt4


    【解决方案1】:

    这不是一个容易回答的问题,并非所有应用程序都接受带有 Alpha 通道的图像。我尝试通过剪贴板发送 PNG 图像(因为它支持透明度),但由于 MS Office 没有标准的 PNG 剪贴板导入而失败。

    How do I put an QImage with transparency onto the clipboard for another application to use?

    我们必须开发一个与 MS Office API 交互的接口来插入图像。但是,您能否具体说明您的目标应用程序?

    我问过 Qt,他们有点说它按预期工作,它的接收应用程序需要修复。

    【讨论】:

    • 如果我将带有 alpha 通道的 PNG 图像复制到剪贴板,然后使用 QClipboard 和 QMimeData 将其提取到我的应用程序中,我使用 QMimeData::imageData().value() 接收数据;但是该图像在没有 Alpha 通道的情况下被展平。如果我尝试使用 QMimeData::data("application/x-qt-image") 它会返回一个空的 QByteArray,即使 QMimeData::formats().contains("application/x-qt-image") 返回 true。在 Mac 上使用本机粘贴板并将数据检索到 CGImageRef 图像格式正确且带有 alpha 通道,这让我认为 QClipboard 中存在错误。干杯德扬
    • 我已经尝试使用适用于 MAC 的 MS Office 2008,它可以从剪贴板接受带有 alpha 通道的 PNG。干杯德扬
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多