【Python】PIL.Image转QPixmap后运行异常的个人解决方法

问题场景:


  PIL.Image图片,直接调用PIL.Image.toqpixmap()转成QPixmap后,不会立即报错,
  但后续使用该QPixmap时(包括但不仅限于使用QLabel.setPximap()QPixmap.save())将立即出现异常

【Python】PIL.Image转QPixmap后运行异常的个人解决方法_第1张图片

  不知道是我关键词不对,还是只有我一个人碰到这样的问题,亦或是bing搜索引擎拉胯,我愣是没搜到相关回答,就有点搞笑。



解决方法:

  在进行几次随意的尝试后,倒是找到了个不像是根本原因的原因,那就是转换异常的PIL.Image图片往往是RGB格式的,应该是转图片的那个函数有问题,但我也懒得再深究原因。早上试过py -m pip install --upgrade PIL 更新了PIL模块,不顶用,而且新PIL还有警告说明2023年7月1日起不兼容PyQt5,离谱。
  一个最直接的解决办法就是,调用 PIL.Image.convert()将RGB图片转为RGBA图片,然后代码就能正常运行



示例代码:

import sys
from PyQt5.QtWidgets import QWidget,QLabel,QApplication
from PIL import Image
#from PIL import ImageQt

if __name__ == '__main__':
	im=Image.open('图片.jpg')
	print(im.mode)#如果该图是RGB那么转换为QPixmap会报错
	#im=im.convert("RGBA")#转为RGBA模式


	app = QApplication(sys.argv)
	lb=QLabel()
	lb.resize(600,375)
	lb.show()
	lb.setPixmap(im.toqpixmap())
	sys.exit(app.exec())



小小声:

  1. 模块API问题估计得反馈到官方那边才会修
  2. 在PIL官网愣是没找到PIL.Image.toqpixmap(),又是个更新不同步问题。只不过如果的确没有该函数的话可以使用PIL.ImageQt.toqpixmap()作为替代


本文发布于CSDN,未经个人允许不得私自转载:https://blog.csdn.net/weixin_44733774/article/details/131483674

你可能感兴趣的:(python,开发语言)