猫史档案馆


【Python作品分享】图片转化效果图生成

用户:一个爱听歌的一个爱听歌的查看:0 回复:0 评论:0 创建时间:2020-04-05T16:49:24


【作品展示】

center_image

 

【作品介绍】

运行代码,导入图片,然后就可以在下拉框选择效果图进行转化了,还可以多次滤镜。

 

【作品源代码】

import sys
from PySide2.QtWidgets import *
from ui_process_img import Ui_process_img
from PySide2.QtGui import *
from PIL import Image,ImageFilter,ImageQt
from sketch import to_sketch
from char import to_char

class ProcessImg(QMainWindow, Ui_process_img):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.file = None
        self.img_temp = None
        self.filters = {
            '模糊滤镜': ImageFilter.BLUR,
            '轮廓滤镜': ImageFilter.CONTOUR,
            '边缘增强滤镜': ImageFilter.EDGE_ENHANCE,
            '浮雕滤镜': ImageFilter.EMBOSS,
            '锐化滤镜': ImageFilter.SHARPEN,
            '平滑滤镜': ImageFilter.SMOOTH,
        }
        self.pbtn_file.clicked.connect(self.select_file)
        self.pbtn_process.clicked.connect(self.process_img)
        self.pbtn_save_img.clicked.connect(self.save_img)
        self.lb_input_img.setScaledContents(True)
        self.lb_output_img.setScaledContents(True)
        self.show()
    
    def select_file(self):
        file_path = QFileDialog.getOpenFileName(caption="选择文件",filter="(*.jpg *.png)")
        if file_path[0]:
            self.file = file_path[0]
            img_pix = QPixmap(self.file)
            self.lb_input_img.setPixmap(img_pix)
            self.img_temp = None
        else:
            QMessageBox.warning(self,"注意!","请重新选择图片文件!")
    
    def process_img(self):
        if self.img_temp:
            img = self.img_temp
        else:
            if self.file:
                img = Image.open(self.file)
            else:
                QMessageBox.warning(self, "注意!", "请先选择图片文件!")
                return

        text = self.cb_filter_list.currentText()
        if "滤镜" in text:
            self.img_temp = img.filter(self.filters[text]).convert('RGBA')
        elif text == "素描风格转化":
            self.img_temp = to_sketch(img)
        elif text == '字符画风格转化':
            self.img_temp = to_char(img)
        img_qt = ImageQt.ImageQt(self.img_temp)
        img_pix = QPixmap.fromImage(img_qt)
        self.lb_output_img.setPixmap(img_pix)
    
    def save_img(self):
        if self.img_temp:
            file_path = QFileDialog.getSaveFileName(caption='保存文件',filter = "(*.png)")
            if file_path[0]:
                save_path = file_path[0]
                self.img_temp.save(save_path)
            else:
                QMessageBox.warning(self,"注意!","请重新选择保存位置!")
        else:
                QMessageBox.warning(self,"注意!","请先进行图像处理!")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = ProcessImg()
    sys.exit(app.exec_())

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页