03-挤需三番钟,教你动手做个图片压缩器

|前言

「教你玩 PY」的第四期开始啦,这一期要解决的问题是有时候我们上传图片时会遇到上传尺寸的限制:

而这类图片一般是不需要多高的品质的,所以我们可以用有损压缩的方法,降低一些质量,换取体积的大幅降低,而这个功能就可以用万能的 Python 制作一个,这一期我们就来制作下面这样的一个带界面的图片压缩器:

(实测可以压缩 60% 以上的体积)

「教你玩 PY」整个栏目是围绕如何玩「PY」(Python,一种简单易学且强大的编程语言),可以令你的工作效率提高,生活质量有所改善,这个栏目每两周会更新一次,每期会用编程的方法解决一个生活/工作上的痛点,当然,是面向没有编程基础的小白的。

|教程开始

本教程接下来的内容会默认你已经安装好 Python 的运行环境,并且以 Pycharm 和 Anaconda 作为默认工具。

如果你听不懂我在说什么,请按照这个教程走一遍再继续看接下来的内容:

*顺便附上一份源代码,可以参考注释理解:

# -*- coding:utf-8 -*-

# 以下为Windows/Mac/Linux/可在麻瓜编程在线环境运行的代码:

# compress image

# click -> dosomething

fromPILimportImageasImg

fromtkinterimport*

fromtkinter.filedialogimport*

fromtkinterimportmessagebox

# ui

# ui update

# business

info = {

'path':[]

}

defmake_app():

app = Tk()

Label(app, text='图片压缩工具', font=('Hack',20,'bold')).pack()  #Hack是自己安装的字体,如果你没安装,可以用系统自带的Arial字体

Listbox(app, name='lbox', bg='#f2f2f2').pack(fill=BOTH, expand=True)

Button(app, text='选择图片', command=ui_getdata).pack()

Button(app, text='开始压缩', command=compress).pack()

Button(app, text='清空列表', command=hit_me).pack()

app.geometry('300x400')

returnapp

defui_getdata():

f_names = askopenfilenames()

lbox = app.children['lbox']

info['path'] = f_names

ifinfo['path']:

 fornameinf_names:

   lbox.insert(END, name.split('/')[-1])

 # abc.jpg

defcompress():

forf_pathininfo['path']:

 output ='/Users/Sunbelife/Desktop/output/' #这里需要换成你的图片输出路径

 name = f_path.split('/')[-1]

 image = Img.open(f_path)

 image.save(output+'c_'+name, quality=60)

messagebox.showinfo(title='压缩完毕',message='已压缩完毕')

defhit_me():

lbox = app.children['lbox']

lbox.delete(, END)

app = make_app()

app.mainloop()

2、下载之后把它丢在你想进行清理重复文件的文件夹里,点击右键 - 选择从 Pycharm 打开:(这里以 macOS 为例,Win 下也是类似步骤)

3、然后在 40 行的地方写上压缩图片的输出路径,然后在代码空白处点右键 - Run:

4、看到如下界面就表示已经运行成功了。

5、然后你就可以按照界面的按钮,选择图片 - 开始压缩,弹出压缩成功的提示框之后,就可以在你预设的文件夹内看到压缩后的文件啦。

Enjoy it.

/* 本栏目往期文章 */

虽然亲手把工具运行出来了

但你可能还有一些问题:

这个代码是什么意思?

能不能加入一个拖动自动压缩的功能?

界面可以再好看点吗?

怎么导出这个软件?

以及更多更细化的需求…

当然这些都是可以满足的

这也是我和和麻瓜编程

开办这个『教你玩 PY』的目的。

如果你希望学懂 Python,

用它解决生活上的问题。

推荐你去他们网站购买在线课程,

购买后可以终身随时看。

还有 24 小时的微信在线答疑。

每节课程也有实例代码和视频讲解。

主要就是面向零基础的小白,

基本只要有兴趣就能学会。

感兴趣的话

直接戳下图按钮即可

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722B132OV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券