尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
QPixmap vs QImage 完整示例
核心记住QImage用来读文件、修改像素、子线程处理图像CPU像素缓冲区QPixmap用来界面显示显卡渲染缓冲区只能主线程用两者可以互相转换fromPyQt5.QtWidgetsimportQWidget,QLabel,QApplicationfromPyQt5.QtGuiimportQPixmap,QImage,QColorfromPyQt5.QtCoreimportQtimportsys appQApplication(sys.argv)winQWidget()win.resize(800,500)# ---------------------- 1.QImage 示例操作像素 ----------------------# 方式1从文件加载QImageimgQImage(test.jpg)ifimg.isNull():print(图片加载失败)# 获取图片宽高wimg.width()himg.height()# 读取某个点像素颜色 (x,y)color:QColorimg.pixelColor(10,10)print(f坐标(10,10) R:{color.red()}G:{color.green()}B:{color.blue()})# 修改像素把(20,20)这个点改成红色img.setPixelColor(20,20,QColor(255,0,0))# 保存QImage到磁盘img.save(qimage_out.png)# ---------------------- 2.QImage → QPixmap给界面显示 ----------------------# QImage不能直接setPixmap给label必须转QPixmappixQPixmap.fromImage(img)label1QLabel(QPixmap显示,win)label1.setGeometry(10,10,400,400)label1.setPixmap(pix.scaled(label1.size(),Qt.KeepAspectRatio,Qt.SmoothTransformation))# ---------------------- 3.QPixmap 示例适合显示不适合改像素 ----------------------pix2QPixmap(test.jpg)# QPixmap没有 pixelColor / setPixelColor不能直接改像素# 如果一定要改像素必须先转QImageimg2pix2.toImage()# QPixmap转QImage修改像素img2.invertPixels()# 颜色取反pix3QPixmap.fromImage(img2)# 修改完转回QPixmap给UIlabel2QLabel(取反之后,win)label2.setGeometry(420,10,400,400)label2.setPixmap(pix3.scaled(label2.size(),Qt.KeepAspectRatio,Qt.SmoothTransformation))win.show()sys.exit(app.exec_())互相转换核心两行# QImage → QPixmap显示用pixQPixmap.fromImage(qimage_obj)# QPixmap → QImage修改像素用imgpixmap_obj.toImage()另一个场景从OpenCV Mat转很常用opencv读出来是BGR格式QImage默认RGB需要转换通道importcv2 matcv2.imread(test.jpg)h,w,chmat.shape# BGR转RGBmat_rgbcv2.cvtColor(mat,cv2.COLOR_BGR2RGB)# mat 转 QImageqimgQImage(mat_rgb.data,w,h,w*3,QImage.Format_RGB888)# QImage转QPixmap给label显示qpixQPixmap.fromImage(qimg)关键区别表格功能QImageQPixmap修改像素✅支持pixelColor/setPixelColor❌不能直接操作像素子线程使用✅可以❌只能主线程用途文件读写、算法处理、opencv交互给QLabel、按钮等控件显示图像底层存储CPU内存像素数组图形显卡缓存常见坑不要在子线程用QPixmap子线程加载处理图片全部用QImage处理完把QImage传到主线程再转QPixmap显示。QPixmap.fromImage()有些格式会丢失透明通道遇到png透明图注意。QImage构造传入外部data比如opencv的data时要保证原内存不被释放否则会花屏。
RELATED

相关推荐

绿色工厂申报SAAS怎么选:本地与云怎么配,机构别一上来全家私有化

绿色工厂申报SAAS怎么选:本地与云怎么配,机构别一上来全家私有化

绿色工厂申报SAAS要不要上?先说观察结论:年并行项目明显变多、顾问一走模板就散、复评又要连续证据时,机构侧更适合用申报导向的协作型系统管齐套与导出;工厂侧再配能月结的能碳底座。本地部署适合强管控、数据驻留写进合同的客户…

📅 2026/8/23 14:11:17
写给过去的自己:成长复盘与自我对话指南

写给过去的自己:成长复盘与自我对话指南

1. 项目概述:写给过去的自己意味着什么 "写给之前的自己"这个看似简单的标题背后,隐藏着每个人都会经历的成长反思与自我对话。作为从业十余年的内容创作者,我深刻理解这种跨越时空的自我交流所蕴含的力量。这不是一封普通的信件&a…

📅 2026/8/23 14:51:36
【信息科学与工程学】【数据中心】第二十五篇 数据中心领域的Fabric高速互联平面 01

【信息科学与工程学】【数据中心】第二十五篇 数据中心领域的Fabric高速互联平面 01

数据中心领域的"Fabric" 本质上是指为解决特定数据流而构建的高速互连平面,现代数据中心(尤其是 AI 数据中心)往往不是一张大网,而是多张专用 Fabric 并行——每张 Fabric 针对一类流量做最优设计。下面按网络、存储、内存、其他(计算/加速、管理、芯片级)四大…

📅 2026/8/23 14:51:36
MORE NEWS

更多资讯

📰

Git仓库初始化与项目保存全攻略:从git init到远程推送实战

初始化一个 Git 仓库,再把自己的项目完整地保存进去——这套操作我前前后后做过的次数早就数不清了,带过的新人也不少。说实话,很多人卡住的不是git init这一条命令,而是后面跟着的一连串连锁问题:Git 装好了不知道全局…

📰

零基础学编程:从环境配置到调试技巧,新手避坑实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

如何一条命令批量下载抖音主页?douyin-downloader 免费完整上手指南

如何一条命令批量下载抖音主页?douyin-downloader 免费完整上手指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…

📰

使用 RouterTestingHarness 进行 Angular 组件路由测试:以 Ghostfolio 客户端为例

后端前端金融科技数据可视化 【免费下载链接】ghostfolio Open Source Wealth Management Software. Angular NestJS Prisma Nx TypeScript 🤍 项目地址: https://gitcode.com/GitHub_Trending/gh/ghostfolio 点击查看 免费下载 导读 本文基于 Gho…

📰

如何用WeChatMsg十分钟导出微信聊天记录:免费、完整的HTML/Word/CSV与年度报告指南

如何用WeChatMsg十分钟导出微信聊天记录:免费、完整的HTML/Word/CSV与年度报告指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.c…

📰

懂车帝反爬实战:Playwright动态渲染与JS指纹绕过

1. 项目概述:为什么懂车帝数据值得花力气去爬,又为什么它特别难啃懂车帝不是普通资讯站,它是字节跳下场做汽车垂类的重兵投入产品,背后有完整的车型数据库、用户行为埋点、实时报价系统和经销商联动网络。我最早接触这个需求&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬