python 批处理压缩图片
巧合之下,需要一个能够批处理压缩图片的程序来帮我的私人图库做一个压缩。在网上找了一些软件,但是都没有遇到合适的(或者免费的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 批处理压缩图片相关推荐
- 使用Python批量压缩图片
使用Python批量压缩图片 Python脚本 #coding:utf-8 import Image import os import os.path def picIsCorrect(fileSuf ...
- Python批量压缩图片
Python批量压缩图片 代码如下 代码如下 可支持压缩指定单张图片,单个文件夹,多个文件夹,可根据自己实际场景的需求扩展丰富.话不多说,上代码. # @Time : 2021/10/14 9:16i ...
- 如何使用python批量压缩图片_Python实现批量压缩图片
# -*- coding: utf-8 -*- """ __author__= 'Du' __creation_time__= '2018/1/5 10:06' &quo ...
- python批处理将图片进行放大实例代码
最近处理一些规格不一的照片,需要修改成指定尺寸便于打印,本篇文章主要给大伙介绍关于Python批量处理将图片进行放大的相关资料,文中通过实例代码介绍的非常详细,需要的伙伴们可以参考下. python批 ...
- 如何使用python批量压缩图片_python利用Guetzli批量压缩图片
Google 又开源了,这次开源了一款图像算法工具 Guetzli.Guetzli,在瑞士德语中是"cookie(曲奇)"的意思,是一个针对数码图像和网页图像的 JPEG 编码器, ...
- 如何使用python批量压缩图片_利用Python 批量压缩图片
方法一 直接调整宽高 先放参考资料:如何用Python智能批量压缩图片? import math from glob import glob from PIL import Image import ...
- python批量压缩图片_Python图片批量压缩到指定大小并将JPG转为PNG格式
背景: 待压缩的图片大小有几十KB到近10M大小不等,且绝大部分图片为JPG格式.这些待压缩图片放在picture文件夹下 以及picture文件夹下的子文件夹中 现需要将picture文件夹下这些图 ...
- python——实现压缩图片至指定大小
一.问题描述 遇到了一次那种要求上传图片,图片大小要在1M以内的,一开始尝试用python的cv2来resize实现,后来没成功,百度发现可以用以下方法实现. 二.代码如下 import os fro ...
- 如何使用python批量压缩图片_使用python脚本批量压缩图片大小
需要安装第三方模块PIL#coding:utf-8 import Image import os #图片压缩批处理 def compressImage(srcPath,dstPath): for fi ...
最新文章
- GitHub上整理的一些工具【转载】
- python飞机大战的实训心得体会-python之基础总结(飞机大战)
- php商城多属性选择,ecshop后台商品属性详解之复选属性
- 非常郁闷,WinForm中正常显示的自定义控件无法在WebForm中正常显示!
- 中国制造2025变革,背后的大数据来龙去脉
- 记录hiveonspark:Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
- flink fi java_Flink DataStream API编程指南
- 7z解压缩软件下载安装教程
- 皮尔逊、斯皮尔曼、肯德尔相关系数
- MATLAB中的norm函数
- 20个免费网站测试工具
- 一、CPU寄存器说明
- 微步在线云API-python批量检测IP脚本
- java聚类分析实例_K-means算法的java实现,聚类分析681个三国武将
- KMP算法中next数组到底有什么深意
- 酷派手机COOLPAD5380CA动态权限允许无法点击
- ionic3保存图片到本地相册
- 《详细》使用ventoy制作linux to go和win to go放在u盘中《即走即用的便携式系统》,自带系统引导
- ACP敏捷知识点汇总
- html如何实现小语种翻译,如何使用“小语种自动翻译”功能?
热门文章
- 如何快速确定男生对你是否真心?
- 5分钟带你了解会员营销!
- 计算机教师格言座右铭,适合教师的格言座右铭精选50句
- 一篇有关LightSwitch部署的指南,来自 Beth Massi 博客
- 北科计算机,北科计算机协会 | 手游网游页游攻略大全
- 计算机第三次浪潮是,物联网是继计算机、互联网之后世界信息产业发展的第三次浪潮...
- win7 开发相关 软件装机
- 学习笔记(01):FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和FFMpegSDK-音视频编码类封装介绍和使用ffmpeg工具抽取rgb和pcm...
- Android翻页入门学习(三)阴影绘制
- JAVA 判断图片是否存在透明区域