特别说明:
本实例以及后面的实例都是承接别人写的的pyqt4的实例,网址是:http://blog.csdn.net/ChumpKlutz;
由于别人没有写了,所以我就自己研究和补充了后面的实例。
图片的缩放和旋转是图片处理的常用功能,本实例通过QMatrix实现图片的缩放和旋转:
具体代码实现如下:
# -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
class MainWindow(QMainWindow):
def __init__(self,parent=None):
super(MainWindow,self).__init__(parent)
f=QFont("ZYSong18030",12)
self.setFont(f)
self.setWindowTitle("Image Processor")
self.imageLabel=QLabel()
self.imageLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
self.imageLabel.setScaledContents(True)
self.setCentralWidget(self.imageLabel)
self.image=QImage()
if self.image.load("image/cc.png"):
self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
self.resize(self.image.width(),self.image.height())
self.createActions()
self.createMenus()
self.createToolBars()
def createActions(self):
self.zoominAction=QAction(QIcon("image/zoomin.png"),self.tr("放大"),self)
self.zoominAction.setShortcut("Ctrl+P")
self.zoominAction.setStatusTip(self.tr("放大"))
self.connect(self.zoominAction,SIGNAL("triggered()"),self.slotZoomin)
self.deflateAction=QAction(QIcon("image/deflate.png"),self.tr("缩小"),self)
self.deflateAction.setShortcut("Ctrl+A")
self.deflateAction.setStatusTip(self.tr("缩小"))
self.connect(self.deflateAction,SIGNAL("triggered()"),self.slotDeflate)
self.circumgyrate=QAction(QIcon("image/circumgyrate.png"),self.tr("旋转"),self)
self.circumgyrate.setShortcut("Ctrl+B")
self.circumgyrate.setStatusTip(self.tr("旋转"))
self.connect(self.circumgyrate,SIGNAL("triggered()"),self.slotCircumgyrate)
def createMenus(self):
PrintMenu=self.menuBar().addMenu(self.tr("缩放"))
PrintMenu.addAction(self.zoominAction)
PrintMenu.addAction(self.deflateAction)
circumgyrateMenu=self.menuBar().addMenu(self.tr("旋转"))
circumgyrateMenu.addAction(self.circumgyrate)
def createToolBars(self):
fileToolBar=self.addToolBar("Print")
fileToolBar.addAction(self.zoominAction)
fileToolBar.addAction(self.deflateAction)
fileToolBar.addAction(self.circumgyrate)
def slotZoomin(self):
if self.image.isNull():
return
martix = QMatrix()
martix.scale(2,2)
self.image=self.image.transformed(martix);
self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
self.resize(self.image.width(),self.image.height())
def slotDeflate(self):
if self.image.isNull():
return
martix = QMatrix()
martix.scale(0.5,0.5)
self.image=self.image.transformed(martix);
self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
self.resize(self.image.width(),self.image.height())
def slotCircumgyrate(self):
if self.image.isNull():
return
martix = QMatrix()
martix.rotate(90)
self.image=self.image.transformed(martix);
self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
self.resize(self.image.width(),self.image.height())
app=QApplication(sys.argv)
window=MainWindow()
window.show()
app.exec_()