编写一个简单的图像处理系统,实现图像的打开、另存、缩放、旋转、图像增强等功能。利用PyQt建立如图9-24所示的界面。

编写一个简单的图像处理系统,实现图像的打开、另存、缩放、旋转、图像增强等功能。利用PyQt建立如图所示的界面。30S100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
编写一个简单的图像处理系统,实现图像的打开、另存、缩放、旋转、图像增强等功能。利用PyQt建立如图9-24所示的界面。30S100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
编程的步骤如下:30S100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(1) 首先利用PyQt Designer进行界面设计,并将.ui文件转换成.py文件;30S100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(2) 在形成的.py文件中增加第11-15行代码;增加87-91行代码;30S100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(3) 编写相关的函数;30S100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
(4) 按21-26行的形式,将QT控件的相应的信号和槽(Python的函数)连接起来。
  1. # -*- coding: utf-8 -*- 
  2. import sys 
  3. from PyQt5 import QtCore 
  4. from PyQt5 import QtGui 
  5. from PyQt5 import QtWidgets 
  6. from PyQt5.QtWidgets import QFileDialog 
  7. from PIL import Image                          #导入Image模块 
  8. from  PIL import ImageEnhance                  #导入ImageEnhance模块 
  9. class Ui_Form(QtWidgets.QWidget):                
  10.     #添加11-15行程序 
  11.     def __init__(self): 
  12.         super(Ui_Form,self).__init__() 
  13.         self.setupUi(self
  14.         self.retranslateUi(self
  15.         self.scale=0 
  16.     
  17.     def setupUi(self, Form): 
  18.        .                                   #略 
  19.        .                                   #略 
  20.        .                                   #略 
  21.         self.pushButton_open.clicked.connect(self.openimg) 
  22.         self.pushButton_large.clicked.connect(self.largeimg) 
  23.         self.pushButton_Small.clicked.connect(self.smallimg) 
  24.         self.pushButton_rotate.clicked.connect(self.rotate) 
  25.         self.pushButton_save.clicked.connect(self.save) 
  26.         self.pushButton_enhance.clicked.connect(self.enhance) 
  27.         
  28.     def openimg(self,):                # 打开文件函数 
  29.         fileName, filetype = QFileDialog.getOpenFileName(self
  30.                          "选取文件"
  31.                          "C:/"
  32.                          "所有图像文件(*.jpg)")   
  33.         self.img=Image.open(fileName) 
  34.         pix=self.pil2pixmap(self.img)    # 将PIL图像转换QImage格式 
  35.         self.label_img.setPixmap(pix)    #在标签中显示图像 
  36.  
  37.     def save(self):                     # 保存文件函数 
  38.         fileName,ok = QFileDialog.getSaveFileName(self
  39.                                 "文件保存"
  40.                                 "C:/"
  41.                                 "图像文件 (*.jpg)"
  42.         if fileName: 
  43.            self.img.save(fileName) 
  44.            QtWidgets.QMessageBox.information(self,"信息提示","文件保存成功!!!"
  45.  
  46.     def rotate(self):                      # 旋转图像函数 
  47.         new_img=self.img.rotate(90
  48.         self.showimg(new_img) 
  49.         self.img=new_img 
  50.  
  51.     def largeimg(self):                    #图像放大函数 
  52.         self.scale+=0.2 
  53.         new_width,newheight = self.img.size 
  54.         new_width=int(new_width*(1+self.scale)) 
  55.         newheight=int(newheight*(1+self.scale)) 
  56.         new_img = self.img.resize((new_width,newheight)) 
  57.         self.showimg(new_img) 
  58.  
  59.     def smallimg(self):                    #图像缩小函数 
  60.         self.scale-=0.2 
  61.         new_width,newheight = self.img.size 
  62.         new_width=int(new_width*(1+self.scale)) 
  63.         newheight=int(newheight*(1+self.scale)) 
  64.         new_img = self.img.resize((new_width,newheight)) 
  65.         self.showimg(new_img) 
  66.  
  67.     def enhance(self):                      #图像增强函数 
  68.         brightness = ImageEnhance.Brightness(self.img) 
  69.         bright_img = brightness.enhance(2.0)         #增加图像亮度 
  70.         self.showimg(bright_img) 
  71.         self.img=bright_img 
  72.  
  73.     def pil2pixmap(self,img):                      #图像格式转换函数 
  74.         im = img 
  75.         im = im.convert("RGBA"
  76.         data = im.tobytes("raw","RGBA"
  77.         qim = QtGui.QImage(data, im.size[0], 
  78.                  im.size[1], QtGui.QImage.Format_ARGB32) 
  79.         pix = QtGui.QPixmap.fromImage(qim) 
  80.         return pix 
  81.  
  82.     def showimg(self,img):                         #在QT中显示图像函数 
  83.         pix=self.pil2pixmap(img) 
  84.         self.label_newimg.clear() 
  85.         self.label_newimg.setPixmap(pix)  #将PIL图像转换为QT图像 
  86.  
  87. if __name__=="__main__"
  88.     app=QtWidgets.QApplication(sys.argv) 
  89.     ui=Ui_Form() 
  90.     ui.show() 
  91.     sys.exit(app.exec_()) 

关 键 词

图像处理系统

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢