Python序列_如何做一个图片压缩工具

Python序列_如何做一个图片压缩工具


Python序列_如何做一个图片压缩工具


问题拆分

Python序列_如何做一个图片压缩工具

方法

Python序列_如何做一个图片压缩工具

Python序列_如何做一个图片压缩工具

Python序列_如何做一个图片压缩工具

思路:

from PIL import Image
path=r'C:UsersAdministratorDesktopexcle_pythonaa1.jpg'
out_path=r'C:UsersAdministratorDesktopexcle_pythonoutaa1.jpg'
image_open = Image.open(path)
image_open.save(out_path,quality=50)

压缩前


Python序列_如何做一个图片压缩工具

压缩后:---接近50%的压缩而且图片清晰度影响很小

Python序列_如何做一个图片压缩工具

特别注意

特别注意:tkinter 和第三方压缩工具的Image方法同名的方法,所以引用时

第三方要取一个别名,规避错误!否则会报错!

Python序列_如何做一个图片压缩工具

错误信息为:


Python序列_如何做一个图片压缩工具



下调字体样式

字体属性font 样式 ‘Hack’ 大小20 粗体 ‘bold’


Python序列_如何做一个图片压缩工具



代码如下:
from PIL import Image as Img
#回话包tkinter.filedialog
# from tkinter import *
from tkinter.filedialog import *
#设置当前路径
import sys
import os
import datetime


#添加数据字典 接收路径
info ={'path':[]}

quality_value =''
#字体样式
_font = ['Hack', 20, 'bold']

def get_today():
now = datetime.datetime.now()
otherStyleTime = now.strftime("%Y-%m-%d")
return otherStyleTime

file_url = os.path.dirname(os.path.realpath(sys.argv[0])).replace('','/')
#百分比
quality_value=0

def make_app():
app = Tk()
Label(app,text='图片压缩工具',font=_font).pack()
Label(app, text='请输入百分比', font=_font).pack()
Entry(app, name='input',text='压缩百分比').pack()
#ill=BOTH 左右两边 expand=True 上下两边
Listbox(app,name='listbox',bg='#f2f2f2').pack(fill=BOTH,expand=True)
Button(app,name='open', text='打开',command=ui_getdata,font=_font).pack(fill=BOTH,expand=True)
Button(app,name='compress',text='压缩',command=compress,font=_font).pack(fill=BOTH,expand=True)
#初始框大小
app.geometry('300x400')
return app
#ui界面交互
def ui_getdata():
ui_change('压缩')
f_names = askopenfilenames()
#赋值--路径添加到数据字典中
info['path']=f_names
#找到listbox
list_box = app.children['listbox']
#清空所有列表
list_box.delete(0,END)
#如果不等于空
if info['path']:
for f in f_names:
#f.split('/')[-1] 截取最后一个取得文件路径
list_box.insert(END,f.split('/')[-1])


#压缩功能

def compress():
quality_value = app.children['input'].get()
if app.children['input'].get() == '':
quality_value=50
try:
out_path = file_url + '/' + '压缩图片保存路径'+get_today()
if os.path.exists(out_path) == False:
os.makedirs(out_path)
for f_path in info['path']:
name=f_path.split('/')[-1]
image_open = Img.open(f_path)
#quality 压缩率是int类型 不能是string
image_open.save(out_path + '/' + 'c_'+name, quality=int(quality_value))
ui_change('压缩成功')
except:
ui_change('压缩失败')

def ui_change(s_str):
app.children['compress']['text']=s_str

if __name__=='__main__':
app = make_app()
app.mainloop()

欢迎关注和转发! 希望对你有帮助!

展开阅读全文

页面更新:2024-02-29

标签:序列   图片   赋值   回话   百分比   清晰度   别名   字典   路径   样式   属性   大小   字体   方法   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top