QImage 在 PNG 中设置 alpha 透明度

2023-12-22

我正在尝试在另一个图像上绘制图像(并且该部分有效),但在绘制覆盖图像之前我想降低它的不透明度。这就是我遇到麻烦的地方。我的叠加图像是PNG的,它们本身有透明区域,否则它们的内容是黑色的。在 Qt 中,我循环遍历每个像素,但无法确定像素是否透明 - 它告诉我每个像素都是黑色且具有完整的 Alpha。我尝试过检查像素颜色和 Alpha,但我一定做错了。搜索尚未找到解决方案。这是我正在使用的小循环:

// Set Alpha
for (int x = 0; x < overlay.width(); x++)
{
    for (int y = 0; y < overlay.height(); y++)
    {
        pixelColor = QColor(overlay.pixel(x,y));

        if (pixelColor.alpha() == 255)
        {
            overlay.setPixel(x, y, QColor(0,0,0,200).rgba());
            //qDebug() << "Not Skipped";
        }
        else
        {
            qDebug() << "Skipped";
        }
    }
}

QImage 说我的叠加图像格式是 Format_ARGB32。有人知道我做错了什么吗?根据 Qt 文档,我应该能够使用 alpha(),但它为每个像素提供了 255。也许我把颜色弄错了?


你的问题在于QColor(QRgb)构造函数 http://qt-project.org/doc/qt-4.8/qcolor.html#QColor-3:

使用值颜色构造颜色。 Alpha 分量被忽略并设置为实体。

你遇到这个问题是因为QImage::pixel(int,int)返回一个QRgb。你应该使用QImage::pixelColor(int,int)相反(如果可用,在 Qt 5.6 中引入),或者使用QRgb直接,像这样:

QRgb col = image.pixel(x,y);
if(qAlpha(col) == 255) {}

请注意,如果您想降低图像的不透明度,您可以随时更改 QPainter 的不透明度 http://qt-project.org/doc/qt-4.8/qpainter.html#setOpacity.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QImage 在 PNG 中设置 alpha 透明度 的相关文章

  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • QPainter 性能高帧率

    我试图在 QPainter 中以 60fps 的速度显示视频 在 OpenGLwidget 中 我遇到一个问题 有时绘图花费的时间太长 并且在使用 QPainter 时发生下一个重绘事件 这会生成警告和随机崩溃 有几个问题 是否有一种 Qt
  • SWI-Prolog 与 C++ 接口的问题

    我试图让 SWI Prolog 与 C 很好地配合 现在束手无策 现在 在我开始准确解释我的问题是什么之前 我想首先说明我的项目是关于什么的以及我选择了哪些工具来开发解决方案 我的教授分配给我的任务是开发一个 GUI 程序 作为 SWI p
  • 我应该使用 QCoreApplication::processEvents() 还是 QApplication::processEvents()?

    我有一个从两者调用的方法QThreads和主线程 这个方法有时可能需要很长时间才能在循环中进行计算 所以我把QCoreApplication processEvents 这可以防止 GUI 冻结 在某个时刻我已经改变了QCoreApplic
  • PyQt - 如何从给定的小部件获取顶级父级?

    给定的小部件如何访问它最旧的父级 即顶级小部件 我需要 showMinimized it 现在我正在使用 self parent parent parent showMinimized 但这似乎不是最好的方法 如果它移动了 我需要手动更改父
  • 仅在发布模式下使用 glGenBuffer 时出现未处理的异常 - QT

    我在 Windows 7 上使用 Qt 4 8 发布模式编译项目时遇到了一些问题 调试时一切正常 但在发布时我收到未处理的异常 0xC0000005 访问冲突 我将范围缩小到发生这种情况的行 即生成像素缓冲区的时间 我的第一个猜测是 DLL
  • 打开和关闭附加窗口 (QML)

    目前我有一个通过以下方式打开的窗口 property variant win Button id testButton MouseArea onClicked var component Qt createComponent test qm
  • 仅在内部/外部抚摸路径?

    Given a QPainterPath http qt project org doc qt 4 8 qpainterpath html如何仅在路径的内侧或外侧边缘 或非闭合路径的左侧或右侧 描边路径 QPainter strokePat
  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 使用 OpenGL 渲染 QImage

    与我相关的其他问题 https stackoverflow com questions 20126354 render qimage from sooffscreenrenderer in qglwidget 我认为更核心的问题是 如何渲染
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • 是否有 Qt 小部件可以浏览应用程序中小部件的层次结构(类似于 Spy++)?

    我们有一个具有复杂的小部件层次结构的应用程序 我希望能够以与 Spy 类似的方式浏览此层次结构 查看和编辑属性 例如大小 如果有一个小部件可以显示此信息 则它不需要在外部应用程序中运行 那么问题来了 这样的神兽存在吗 您可以使用Gammar
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap

随机推荐

  • 为什么我的“帖子”在 android recyclerview 中以不同的尺寸加载?

    好的 这就是我的回收视图显示我的 帖子 的方式 谁能告诉我为什么 我也会发布源代码 我尝试更改一些代码但没有成功 另外 当我滚动 RecyclerView 时 其中一些会调整为更小或更大的尺寸 感谢任何和所有的帮助 片段 home xml
  • 无法更改奥利奥中的语言

    我正在尝试在我的应用程序中使用阿拉伯语和英语 它在运行 Android Nougat 或更低版本的设备上运行良好 但它不适用于奥利奥设备 API 26 中有一些新的代码要求吗 我正在使用下面的代码 public void changeLan
  • Ant Design Form - onAfterChange 处理程序

    我使用 antd 创建了一个表单 每当字段发生更改时 它都会使用以下命令将表单值输出到控制台onValuesChange函数在一个Form 我的问题是Slider组件称之为onValuesChange拖动滑块时起作用 我希望它位于onmou
  • 使用函数在 pandas df 中添加列

    我有一个 Pandas df 见下文 如何将函数中的值添加到新列 价格 功能 def getquotetoday symbol yahoo Share symbol return yahoo get prev close df Symbol
  • Dijkstra 算法适用于有向图还是无向图?

    我一直试图用谷歌搜索这个 但我发现的结果只会增加我的困惑 好像两者都可以用 如果是这样 它的默认设计目的是什么 需要进行哪些更改才能使其以非默认方式工作 无论是定向还是非定向 编辑 仅供参考 上学期我遇到了一个问题 我得到了这样的列表 机场
  • Xcode 9 无线调试不起作用

    由于某种原因 无线调试在这里不起作用 这是我所做的 使用最新的 Xcode 9 在我的 iPhone 7 上使用最新的 iOS 11 两台设备都在同一网络中 通过Lightning连接iPhone 在设备和模拟器菜单中选择 通过网络连接 在
  • python 检查utf-8字符串是否为大写

    当我有 utf 8 编码的字符串时 我在使用 isupper 时遇到问题 我有很多文本文件要转换为 xml 虽然文本变化很大 但格式是静态的 全部大写的单词应该包裹在
  • 有效方法以红色“未解决的参考”突出显示

    如何解决这个问题呢 该程序有效 但戈格兰的方法以红色突出显示 添加了 Qt 5 8 版本 Gogland 1 0 Preview 1 0 EAP Build GO 171 4694 61 built on June 27 2017 Gogl
  • Windows 8.1 x64 上 Eclipse windowbuilder pugin 的设计视图提示“未知 GUI 工具包”

    我在 Windows 4 pro x64 上使用 Eclipse Kepler Release 1 x64 和 Java 7 x64 并且 Eclipse WindowBuilder 插件没有任何问题 但自从我升级到 Windows 8 1
  • 奇怪的行为动态渲染输入类型复选框的类型 Angular 2+

    Need 创建类型属性为dynamic的输入 像这样的东西
  • wpf中的字符串格式

    我有一个TextBox on WPF这与我的模型中的 float 变量有关 在 TextxBox 之后
  • 从 Bash shell 脚本发送邮件

    我正在写一个Bash http en wikipedia org wiki Bash 28Unix shell 29Mac 的 shell 脚本 通过打开自动应用程序发送电子邮件通知 该自动应用程序使用 Mail app 中的默认邮件帐户发
  • 将模块包含到项目后出现“不受支持的类文件版本 52.0”

    在 Android Studio 中创建一个空项目并包含一个纯 java 模块 该模块可以自行编译并完美运行 后 我在该模块中的每个类上都收到以下错误 Error PARSE ERROR Error unsupported class fi
  • 使用 HTML5 拖放,有没有一种方法可以在保持拖放流的同时从视图中隐藏元素

    我正在努力通过创建一个指示器 拖动元素的轮廓 来改进拖放实现 当您在网格中拖动和移动时 该指示器沿着设置的柔性网格移动 在当前的实现中 拖动的元素就位 当我放在放置目标上时 它会更新弹性顺序 我想要做的是完全隐藏元素 以便更好地视觉提示元素
  • Oracle(空间几何)查询的问题

    我正在尝试使用 SDO WITHIN DISTANCE 形成一个查询 返回给定矩形内的实体列表 我所做的查询似乎应该有效 但 Oracle 给了我一些奇怪的错误 这是查询 SELECT FROM TBLENTITYLOCATION TL I
  • 使对象的属性可迭代

    我返回一个包含具有多个属性的对象的列表 如下所示 results q fetch 5 for p in results print s s d inches tall p first name p last name p height 是否
  • Xcode 错误:Outlet 无法连接到重复内容

    经过一些搜索和编辑后 我似乎找不到解决此错误的解决方案 我正在尝试将位置搜索结果与表格链接起来 以列表形式显示搜索结果 我的地图上有详细信息按钮 该按钮与名为 FirstViewController 的 UIViewController 链
  • Google Native Client,将二进制数据从 NACL 发送到前端

    如何发送二进制数据 例如mp3 mp4数据返回前端 我知道有两种方法可以做到这一点 利用NACL提供的沙箱文件系统并在前端获取url 将数据通过PostMessage using VarArrayBuffer 如果有人能给我一个如何传递二进
  • 数据流程图和流程图有什么区别?

    我想知道为什么我们使用数据流程图而不是流程图 流程图详细说明了流程跟随 DFD 详细说明了流程data通过一个系统 在流程图中 箭头表示元素之间的控制 而不是数据 转移 元素是指令或决策 或I O等 在 DFD 中 箭头实际上是元素之间的数
  • QImage 在 PNG 中设置 alpha 透明度

    我正在尝试在另一个图像上绘制图像 并且该部分有效 但在绘制覆盖图像之前我想降低它的不透明度 这就是我遇到麻烦的地方 我的叠加图像是PNG的 它们本身有透明区域 否则它们的内容是黑色的 在 Qt 中 我循环遍历每个像素 但无法确定像素是否透明