一、初识imageviewer
ImageViewer是一款基于Python开发的图像查看软件,它可以打开多种图片格式,包括png、jpg、bmp等。除此之外,ImageViewer还具有基本的图片编辑功能。
通过使用ImageViewer,我们可以轻松地浏览和查看图片,并对图片进行旋转、缩放等基本编辑操作。
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QLabel
app = QApplication(sys.argv)
label = QLabel()
pixmap = QPixmap('image.jpg')
label.setPixmap(pixmap)
label.show()
sys.exit(app.exec_())
二、图片缩放功能
ImageViewer提供了图片缩放功能,可以将图片放大或者缩小到指定的大小,轻松满足多种需求。缩放操作可以通过鼠标滚轮、快捷键等方式进行,非常方便。
以下是一个缩放实例,通过鼠标滚轮控制缩放大小:
def wheelEvent(self, event):
delta = event.angleDelta().y()
if delta > 0:
# 放大操作
self.scaleImage(1.25)
else:
# 缩小操作
self.scaleImage(0.8)
def scaleImage(self, factor):
self.scale_factor *= factor
self.image_label.resize(self.scale_factor * self.image.width(),
self.scale_factor * self.image.height())
self.adjustScrollBar(self.scroll_area.horizontalScrollBar(), factor)
self.adjustScrollBar(self.scroll_area.verticalScrollBar(), factor)
def adjustScrollBar(self, scroll_bar, factor):
scroll_bar.setValue(int(factor * scroll_bar.value()
+ ((factor - 1) * scroll_bar.pageStep()/2)))
三、图片旋转功能
ImageViewer还提供了对图片进行旋转的功能,支持左右旋转,逆时针旋转等多种操作,非常方便。
以下是图片旋转的代码实现:
self.rotate_count += 1
if self.rotate_count == 4:
self.rotate_count = 0
if self.rotate_count == 1:
self.image = self.image.transformed(QTransform().rotate(90))
elif self.rotate_count == 2:
self.image = self.image.transformed(QTransform().rotate(180))
elif self.rotate_count == 3:
self.image = self.image.transformed(QTransform().rotate(270))
else:
self.image = self.image.transformed(QTransform().rotate(0))
self.image_label.setPixmap(QPixmap.fromImage(self.image))
self.image_label.adjustSize()
四、图片滤镜功能
ImageViewer具有只读模式,可以设置图像显示的滤镜。其中包括模糊、轮廓线、浮雕、边缘增强等多种滤镜,可以让图片呈现出不同的视觉效果。
以下是一段实现图片模糊滤镜功能的代码:
class BlurFilter():
def filter(self, image):
blurred = image.filter(ImageFilter.BLUR)
return blurred
class ImageViewer(QWidget):
def __init__(self, parent=None):
super(ImageViewer, self).__init__(parent)
self.image = None
self.image_label = QLabel()
self.filters = {'blur': BlurFilter()}
def applyFilter(self, filter):
if self.image is not None:
filtered = self.filters[filter].filter(self.image)
self.image_label.setPixmap(QPixmap.fromImage(ImageQt(filtered)))
self.image_label.adjustSize()
五、图片保存功能
ImageViewer提供了图片保存功能,用户可以将图片保存到本地硬盘上的指定目录。在保存图片的同时,ImageViewer还会自动检测图片的格式,并进行相应的转换工作。
以下是实现图片保存功能的代码:
def save(self):
file_path, _ = QFileDialog.getSaveFileName(self, "Save Image", "",
"PNG(*.png);; JPEG(*.jpg *.jpeg);; All Files(*.*) ")
if file_path == '':
# 未选择保存路径
return
# 获取图片保存后的路径
extension = file_path.split('.')[-1]
# 根据图片的类型进行相应的转换
if extension.lower() == 'png':
self.image.save(file_path, 'png', quality=100)
elif extension.lower() in ('jpg', 'jpeg'):
self.image.save(file_path, 'jpeg', quality=100)
else:
self.image.save(file_path)
六、总结
通过本文的介绍,我们了解了ImageViewer作为一款开源的图像查看软件,拥有丰富的功能,包括基础的图片浏览、编辑功能,在此基础上还提供了缩放、旋转、滤镜等高度自定义的功能,以及保存图片到本地等实用的功能,方便用户的日常使用。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/233770.html