巧合之下,需要一个能够批处理压缩图片的程序来帮我的私人图库做一个压缩。在网上找了一些软件,但是都没有遇到合适的(或者免费的bushi),于是想到能不能用自己拙劣的python写个小程序呢?

于是在网上搜寻处理图片的库,然后找他们的compress,可是结果是一大堆的resize,要是有哪位好心人可以给我介绍下两者的区别或者compress的合适的库,不胜感激啊(~ ̄▽ ̄)~

所以没错,下面的就是用pillow的resize里滤波采样的那个参数弄的伪压缩,opencv和numpy里也是有这个参数的,因为这个比较顺手,就用了这个,所以诶~别跑啊~大人!!

那下面就开始咯

import os
from PIL import Image

首先引用两个库,os是读取文件目录用的,pillow就是主角啦,处理图片,然后捏就是这样啦

def compress_pic(src_file,save_file,choice):fileName = os.listdir(src_file)print(fileName)# # 如果目录不存在,则创建目录# if not os.path.exists('D:/PycharmProjects/pythonProject4/images/'):#     os.mkdir('D:/PycharmProjects/pythonProject4/images/')    #目录记得是/的,复制过来的要改下# # 循环读取每一张图片for img in fileName:old_pic = Image.open(src_file + '/' + img)print(old_pic.size)if choice == '方式一':new_image = old_pic.resize(old_pic.size, Image.BICUBIC)#两种采样方式二选一,下面的会更加高质量,内存稍大else:new_image = old_pic.resize(old_pic.size,Image.ANTIALIAS)#第一个参数是元组(宽,高),也可以用获得size的方式来获取等比例缩小或者原图print (new_image)# os.mkdir('D:/PycharmProjects/pythonProject4/Newimage01/')new_image.save(save_file + '/' + img)# new_image.save('D:/PycharmProjects/pythonProject4/newhigh/'+img)d定义

定义一个函数compress_pic,至于为什么要用函数,其实 类也可以,但这里程序比较少内容,所以就直接用了,另外,待会还得做个小GUI来方便其他人用这个程序

三个参数 src_file,save_file,choice  分别为 要处理的图库所在的文件夹,压缩后要保存的文件夹所在位置(要提前建立,当然程序里也可以改成如果没有就帮建),压缩方式的选择(一二都可以,区别没感觉)另外想说的是,  这里是可以资源管理器直接打开然后复制到我们的窗口里面的,路径里的“/”“\”会在程序里处理。

然后是我们的GUI程序,我选择了最简单的pysimplegui,人如其名好吧。

import main
import PySimpleGUI as sgsg.theme('BluePurple')# 定义窗口的布局
layout = [  [sg.Text('输入你需要修改的照片的文件夹位置,复制粘贴下来即可,如D:\image'),sg.InputText()],[sg.Text('输入你需要修改的照片的保存的文件夹位置(需要提前新建哦)'), sg.InputText()],[sg.Text('输入你要的压缩方式,如‘方式一’或者‘方式二’,不要输入引号,前者压缩质量高,后者差点'), sg.InputText()],# sg.Combo(#         ['选项一,高质量', '选项二,较差'],#         default_value='选项一',#         size=(10, 1)),  #TODO 用不了combo 解释器没有全局设置,未解决[sg.Button('Ok'), sg.Button('Cancel')] ]# 创建展示窗口
window = sg.Window('图像批处理', layout)# 事件循环并获取输入值
while True:event, values = window.read()if event in (None, 'Cancel'):break# print('You entered ', type(values[0].replace('\\','/')))     #修改路径用的# print('You entered ', values[0].replace('\\','/'))     #修改路径用的src_file = values[0].replace('\\','/')save_file = values[1].replace('\\','/')# sg.popup('You entered',  values[0].replace('\\','/'))# #todo 弹出窗口确认未设置choice = values[2]main.compress_pic(src_file,save_file,choice)window.close()

基本就这样,不难读懂,然后还有几个TODO未解决,搞定的小伙伴一定要让我康康哦( ͡• ͜ʖ ͡• )

然后,接下来就是封装成exe文件,让你那没有朋友的技术,哦不是,没有技术的朋友,没有环境的电脑也能使用这个程序,在 pycharm的terminal输入下面的命令行

pyinstaller -F -w windows.py -n compress -p main.py

然后就生成一个exe啦,可以发给你的小伙伴了,另外可能要管理员权限,或者文件夹用D盘的

效果如下

两个程序补在下面

main.py
import os
from PIL import Imagedef compress_pic(src_file,save_file,choice):fileName = os.listdir(src_file)print(fileName)# 如果目录不存在,则创建目录if not os.path.exists('D:/PycharmProjects/pythonProject4/images/'):os.mkdir('D:/PycharmProjects/pythonProject4/images/')    #目录记得是/的,复制过来的要改下# 循环读取每一张图片for img in fileName:old_pic = Image.open(src_file + '/' + img)print(old_pic.size)if choice == '方式一':new_image = old_pic.resize(old_pic.size, Image.BICUBIC)#两种采样方式二选一,下面的会更加高质量,内存稍大else:new_image = old_pic.resize(old_pic.size,Image.ANTIALIAS)#第一个参数是元组(宽,高),也可以用获得size的方式来获取等比例缩小或者原图print (new_image)new_image.save(save_file + '/' + img)
import main
import PySimpleGUI as sgsg.theme('BluePurple')# 定义窗口的布局
layout = [  [sg.Text('输入你需要修改的照片的文件夹位置,复制粘贴下来即可,如D:\image'),sg.InputText()],[sg.Text('输入你需要修改的照片的保存的文件夹位置(需要提前新建哦)'), sg.InputText()],[sg.Text('输入你要的压缩方式,如‘方式一’或者‘方式二’,不要输入引号,前者压缩质量高,后者差点'), sg.InputText()],# sg.Combo(#         ['选项一,高质量', '选项二,较差'],#         default_value='选项一',#         size=(10, 1)),  #TODO 用不了combo 解释器没有全局设置,未解决[sg.Button('Ok'), sg.Button('Cancel')] ]# 创建展示窗口
window = sg.Window('图像批处理', layout)# 事件循环并获取输入值
while True:event, values = window.read()if event in (None, 'Cancel'):breaksrc_file = values[0].replace('\\','/')save_file = values[1].replace('\\','/')choice = values[2]main.compress_pic(src_file,save_file,choice)window.close()

python 批处理压缩图片相关推荐

  1. 使用Python批量压缩图片

    使用Python批量压缩图片 Python脚本 #coding:utf-8 import Image import os import os.path def picIsCorrect(fileSuf ...

  2. Python批量压缩图片

    Python批量压缩图片 代码如下 代码如下 可支持压缩指定单张图片,单个文件夹,多个文件夹,可根据自己实际场景的需求扩展丰富.话不多说,上代码. # @Time : 2021/10/14 9:16i ...

  3. 如何使用python批量压缩图片_Python实现批量压缩图片

    # -*- coding: utf-8 -*- """ __author__= 'Du' __creation_time__= '2018/1/5 10:06' &quo ...

  4. python批处理将图片进行放大实例代码

    最近处理一些规格不一的照片,需要修改成指定尺寸便于打印,本篇文章主要给大伙介绍关于Python批量处理将图片进行放大的相关资料,文中通过实例代码介绍的非常详细,需要的伙伴们可以参考下. python批 ...

  5. 如何使用python批量压缩图片_python利用Guetzli批量压缩图片

    Google 又开源了,这次开源了一款图像算法工具 Guetzli.Guetzli,在瑞士德语中是"cookie(曲奇)"的意思,是一个针对数码图像和网页图像的 JPEG 编码器, ...

  6. 如何使用python批量压缩图片_利用Python 批量压缩图片

    方法一 直接调整宽高 先放参考资料:如何用Python智能批量压缩图片? import math from glob import glob from PIL import Image import ...

  7. python批量压缩图片_Python图片批量压缩到指定大小并将JPG转为PNG格式

    背景: 待压缩的图片大小有几十KB到近10M大小不等,且绝大部分图片为JPG格式.这些待压缩图片放在picture文件夹下 以及picture文件夹下的子文件夹中 现需要将picture文件夹下这些图 ...

  8. python——实现压缩图片至指定大小

    一.问题描述 遇到了一次那种要求上传图片,图片大小要在1M以内的,一开始尝试用python的cv2来resize实现,后来没成功,百度发现可以用以下方法实现. 二.代码如下 import os fro ...

  9. 如何使用python批量压缩图片_使用python脚本批量压缩图片大小

    需要安装第三方模块PIL#coding:utf-8 import Image import os #图片压缩批处理 def compressImage(srcPath,dstPath): for fi ...

最新文章

  1. GitHub上整理的一些工具【转载】
  2. python飞机大战的实训心得体会-python之基础总结(飞机大战)
  3. php商城多属性选择,ecshop后台商品属性详解之复选属性
  4. 非常郁闷,WinForm中正常显示的自定义控件无法在WebForm中正常显示!
  5. 中国制造2025变革,背后的大数据来龙去脉
  6. 记录hiveonspark:Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
  7. flink fi java_Flink DataStream API编程指南
  8. 7z解压缩软件下载安装教程
  9. 皮尔逊、斯皮尔曼、肯德尔相关系数
  10. MATLAB中的norm函数
  11. 20个免费网站测试工具
  12. 一、CPU寄存器说明
  13. 微步在线云API-python批量检测IP脚本
  14. java聚类分析实例_K-means算法的java实现,聚类分析681个三国武将
  15. KMP算法中next数组到底有什么深意
  16. 酷派手机COOLPAD5380CA动态权限允许无法点击
  17. ionic3保存图片到本地相册
  18. 《详细》使用ventoy制作linux to go和win to go放在u盘中《即走即用的便携式系统》,自带系统引导
  19. ACP敏捷知识点汇总
  20. html如何实现小语种翻译,如何使用“小语种自动翻译”功能?

热门文章

  1. 如何快速确定男生对你是否真心?
  2. 5分钟带你了解会员营销!
  3. 计算机教师格言座右铭,适合教师的格言座右铭精选50句
  4. 一篇有关LightSwitch部署的指南,来自 Beth Massi 博客
  5. 北科计算机,北科计算机协会 | 手游网游页游攻略大全
  6. 计算机第三次浪潮是,物联网是继计算机、互联网之后世界信息产业发展的第三次浪潮...
  7. win7 开发相关 软件装机
  8. 学习笔记(01):FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和FFMpegSDK-音视频编码类封装介绍和使用ffmpeg工具抽取rgb和pcm...
  9. Android翻页入门学习(三)阴影绘制
  10. JAVA 判断图片是否存在透明区域