需求

应对各类报名证件照要求和其他照片需求
PS裁切专业性高且极度压缩后模糊
应对欧玛软件限制背景,无法自定义裁切长宽

功能

自由裁剪长宽比例,滑动照片质量进行照片大小的压缩

界面



原图

裁切后:


原理

PIL库

代码

库:

import os
from threading import Thread
from tkinter import StringVar,Tk,Label,Entry,Button,Scale,HORIZONTAL,LEFT,NORMAL,SUNKEN,NW
from tkinter import messagebox
from tkinter.filedialog import askdirectory, askopenfilename
from PIL import Image as ig
from PIL import ImageTk
ig.MAX_IMAGE_PIXELS = None

函数:

def selectPath():'''选择路径'''dicpath = askopenfilename()if dicpath:path.set(dicpath)img_open = ig.open(dicpath)img_open=img_open.resize((295, 413))img_png = ImageTk.PhotoImage(img_open)img_label.config(image=img_png)img_label.img=img_pngelse:return None
def resize_img(pic,l,k,quality):'''裁切照片pic:照片路径l:长k:宽quality:照片质量'''img=ig.open(pic)resized_img=img.resize((l,k))newfile=pic.split(".")[0]+'_resized.jpg'out_pic_path.set(newfile)resized_img.save(newfile,quality=quality)size=str((os.stat(newfile).st_size)/1000)[:3]+'KB'success.set('存放位置:\n'+f'{newfile}'+'\n'+'点击【打开保存位置】查看图片'+'\n'+f'裁切后的照片大小为【{size}】')
def resizeDef():'''裁切button函数'''try:pic=path.get()l=pic_length.get()k=pic_width.get()if l=='' or k =='':l,k=295,413quality=qual.get()print(quality)resize_img(pic,int(l),int(k),int(quality))except:r = messagebox.askokcancel('警告', '请选择图片')
def openSuccessdir():'''打开生成后的图片文件夹'''try:dirs=out_pic_path.get()if dirs=='':r = messagebox.askokcancel('警告', '请裁切后重试!')else:os.startfile(os.path.dirname(dirs))except:r = messagebox.askokcancel('警告', '请裁切后重试!')
def openPic():'''查看裁切图片'''url=out_pic_path.get()if url=='':r = messagebox.askokcancel('警告', '您还未选择照片或者为裁切!')else:os.startfile(url)
#线程启动,防止tk卡死----------------------------------------
def thread_run():if path.get()!='':success.set('正在裁切-----请勿重复点击裁切按钮!')t1=Thread(target=resizeDef)t1.start()else:r = messagebox.askokcancel('警告', '请选择图片')
def thread_open():t2=Thread(target=selectPath)t2.start()
#-------------------------------------------------------

Tk布局:

    app=Tk()app.title('证件照压缩裁切工具')app.geometry("810x420+300+300")path = StringVar()#当前路径显示success=StringVar()#正在处理的文件名pic_length=StringVar()#自定义长pic_width=StringVar()#自定义宽qual=StringVar()#图片质量,即压缩比例dicpath=''#当前路径out_pic_path=StringVar()x_entry=110#裁切长元素Label(app,text = "裁切宽(像素):",font='20px').place(x=1,y=40)Entry(app,textvariable=pic_length,width='50').place(x=x_entry,y=40)#长(横着)#裁切宽元素Label(app,text = "裁切长(像素):",font='20px').place(x=1,y=80)Entry(app,textvariable=pic_width,width='50').place(x=x_entry,y=80)#宽#滑动条元素Label(app,text = "照片质量",font='20px').place(x=1,y=120)Scale(app,from_=0,to=100,tickinterval=10,orient=HORIZONTAL,resolution=10,length=350,variable=qual).place(x=x_entry,y=120)#裁切成功提示语Label(app,textvariable=success,font='5px',bg='yellow',justify=LEFT).place(x=10,y=230)#选择图片Button(app, text = "选择照片", command = thread_open,font='30px').place(x=5,y=7)Entry(app, textvariable = path,width='50').place(x=110,y=7)#路径#button功能区Button(app, text = "裁切照片",font='30px',command=thread_run,state=NORMAL).place(x=85,y=190)Button(app, text = "查看裁切后的照片",font='30px',command=openPic).place(x=160,y=190)Button(app, text = "打开保存位置",font='30px',command=openSuccessdir).place(x=300,y=190)#readmeinfo='软件说明:\n\默认为295x413-图片质量为0[清晰度和文件大小受质量影响]\n\对于大照片裁切可能有卡顿请耐心等待\n\对于照片指定KB以下压缩,请根据结果滑动质量滑块多次尝试\n\20KB一下建议照片质量为70\n\作者:liubingzhe'Label(app,text=info,font='10px',justify=LEFT).place(x=5,y=300)img_label = Label(app,relief=SUNKEN,width=295,height=413,text='照片预览区域\n大照片加载可能缓慢,请耐心等待\n请等待照片加载完成再进行裁切\n横着为宽,竖着为长',justify=LEFT,anchor=NW)img_label.place(x=500,y=0)app.mainloop()

下载

https://download.csdn.net/download/qq_44198436/12663627

Py_GUI:证件照压缩处理工具相关推荐

  1. 快速将证件照压缩到小一寸,这款工具值得收藏

    相信小伙伴在报名平台上传证件照时,对证件照有严格的体积大小要求,比如:要求小一寸,大小为10-20KB,想必大家都有遇到过这种情况.小编也不例外,可是市面上这么多图片压缩工具,怎样选择一款操作简单,照 ...

  2. php源代码压缩,PHP_PHP 源代码压缩小工具,使用方法:(在命令行运行) 复 - phpStudy...

    PHP 源代码压缩小工具 使用方法:(在命令行运行) 复制代码 代码如下: php compactor.php DESTINATION.php SOURCE.php 下载: compactor.php ...

  3. img解包工具_3、Linux基础命令篇、压缩打包工具

    在管理系统中,我们遇到经常会使用后缀为*.tar.gz |*.tar.bz2 等文件,他们是什么文件呢?请看下面介绍及使用方法 压缩的原理,比如一个字符串"www.baidu.com&quo ...

  4. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  5. 在线CSS代码压缩美化工具

    在线CSS代码压缩美化工具 在线CSS代码压缩美化工具 在线CSS代码压缩.格式化工具.可以删除注释 在线CSS代码压缩.格式化工具.可以删除注释 https://tooltt.com/css/

  6. Linux下的压缩解压缩工具(转载)

    一.Linux压缩工具概述 在Linux系统中,提供了许多压缩工具,虽然方便,但也难免造成一些混乱.笔者通过一段时间的整理,将它们理一理顺,希望能够对大家有所帮助: 首先,我们看一下下面这张" ...

  7. PHP的LZF压缩扩展工具

    PHP的LZF压缩扩展工具 这次为大家带来的是另外一个 PHP 的压缩扩展,当然也是非常冷门的一种压缩格式,所以使用的人会比较少,而且在 PHP 中提供的相关的函数也只是对字符串的编码与解码,并没有针 ...

  8. 如何把手机证件照压缩到10K?手机怎么压缩照片到10K?

    如何把手机证件照压缩到10K?小编给大家推荐一款手机证件照压缩软件,只需三步就可以快速压缩证件照,具体操作步骤如下: 1.首先打开压缩图网站,选择证件照压缩. 2.点击选择图片压缩,找到需要压缩的照片 ...

  9. PHP的bz2压缩扩展工具

    PHP的bz2压缩扩展工具 在日常的开发和电脑使用中,我们经常会接触到压缩和解压的一些工具,PHP 也为我们准备了很多相关的操作扩展包,都有直接可用的函数能够方便的操作一些压缩解压功能.今天,我们先学 ...

最新文章

  1. java protobuffer 网络_使用Protobuf定义网络协议
  2. 如何解决Connect超时导致的阻塞问题
  3. caffe学习(七):使用py-faster-rcnn来训练voc2007数据集(Ubuntu)
  4. po 价格条件表_SAP-MM定价条件全解析 -
  5. 原生js绑定click为什么点一次执行两次_前端小知识10点(2020.10.8)
  6. jsp连接mysql数据库 例子_JSP 连接 MySQL 数据库的例子
  7. java调用zebra斑马打印条码+英文+数字+中文
  8. matlab bp结果,BP-networkmatlab BP神经网络实现手写数字识别,使用 。内有测试数据及实验结果,非常适合入门 276万源代码下载- www.pudn.com...
  9. 计算机复试专业课笔试,关于计算机考研专业课的考试内容
  10. JVM性能调优1:JVM性能调优理论及实践(收集整理)
  11. VMware安裝Ubuntu 16.04.4-server服务器版
  12. Modbus CRC计算器(编译环境:C-Free 5.0)
  13. 无线通信———比较射频和蜂窝电话
  14. kali内开启键盘背光
  15. kubeadm安装K8s 1.16集群--问题集锦
  16. SDP: 会话描述协议(Session Description Protocol)
  17. ios app 解决微信扫二维码不能跳转问题
  18. Android从零开始:Google Play服务
  19. SAP BADI增强点初学分享
  20. 第56期:第七次信息革命的挑战

热门文章

  1. 《CLRNet:Cross Layer Refinement Network for Lane Detection》论文笔记
  2. resultMap标签中里的association标签
  3. 如何利用电位器控制舵机
  4. 文件不以%PDF格式打开
  5. 2020年智慧灯杆产业三大奖项评选开始!
  6. 优秀开源产品推荐:Tpflow工作流引擎
  7. cocos creator 加速器实现
  8. Python3教程: logging 模块用法
  9. uboot默认环境变量修改
  10. 基于SFM的三维重建点云合并及位移测量