Python简易图片疲批量压缩程序

说明

  • 运行环境:Win10 Pycharm
  • 程序没有用到面向对象编程方法,只是简单的面向过程设计
  • 用到的模块:PIL、os、sys
  • 使用方法: 在Pycharm的terminal中输入”python xxx.py source_dir dest_dir”就可以把source_dir中的图片文件进行压缩并保存到dest_dir中

源码

from PIL import Image
import os
import sys# 定义可以识别的图片文件类型,可以自行扩充
valid_file_type = ['.jpg', '.png']
# 定义压缩比,数值越大,压缩越小
SIZE_normal = 1.0
SIZE_small = 1.5
SIZE_more_small = 2.0def make_directory(directory):"""创建目录"""os.makedirs(directory)def directory_exists(directory):"""判断目录是否存在"""if os.path.exists(directory):return Trueelse:return Falsedef list_img_file(directory):"""列出目录下所有文件,并筛选出图片文件列表返回"""old_list = os.listdir(directory)# print old_listnew_list = []for filename in old_list:if os.path.isfile(filename):f, e = os.path.splitext(filename)if e in valid_file_type:new_list.append(filename)else:passelse:pass# print new_listreturn new_listdef print_help():print """This program helps compress many image filesyou can choose which scale you want to compress your img(jpg/png/etc)1) normal compress(4M to 1M around)2) small compress(4M to 500K around)3) smaller compress(4M to 300K around)"""def compress(choose, des_dir, file_list):"""压缩算法,img.thumbnail对图片进行压缩,还可以改变宽高数值进行压缩"""if choose == '1':scale = SIZE_normalif choose == '2':scale = SIZE_smallif choose == '3':scale = SIZE_more_smallfor infile in file_list:img = Image.open(infile)# size_of_file = os.path.getsize(infile)w, h = img.sizeimg.thumbnail((int(w/scale), int(h/scale)))img.save(des_dir + '/' + infile)if __name__ == "__main__":src_dir, des_dir = sys.argv[1], sys.argv[2]if directory_exists(src_dir):if not directory_exists(des_dir):make_directory(des_dir)# business logicfile_list = list_img_file(src_dir)# print file_listif file_list:print_help()choose = raw_input("enter your choice:")compress(choose, des_dir, file_list)else:passelse:print "source directory not exist!"

Python简易图片批量压缩程序相关推荐

  1. java 异想_异想家博客图片批量压缩程序

    为了方便给自己的博客配图,用Golang写了一个脚本处理,现分享出来,有需要的朋友也可以参考修改使用. 压缩规则 1.图片都等比例压缩,不破坏长宽比. 2.如果是横屏图片,压缩到宽度为1280,高度适 ...

  2. 如何使用python批量压缩图片_python 实现图片批量压缩的示例

    项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get_si ...

  3. python jpg压缩_python 实现图片批量压缩的示例

    项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get_si ...

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

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

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

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

  6. 快速批量压缩照片到指定大小工具,照片图片批量压缩实现方法,批量压缩工具

    在工作中,会遇到在某些系统要上传照片,但是对于上传的照片大小有限制,比如限制大小不能超过1MB等,而外业拍摄的照片往往会超过限制的大小,那么这时就需要对照片进行压缩.但是外业照片数据巨大,人工逐张操作 ...

  7. 图片批量压缩变小的办法

    手机拍的照片往往尺寸过大,或者时间长了我们需要对电脑的图片进行整理,很多情况下需要对大量图片进行压缩变小.图片批量压缩变小的办法,不知道大家有没有什么好的分享.今天我就分享我的方法,我使用公司安装的的 ...

  8. 如何将图片批量压缩?全面盘点这几种小方法

    写在前面:现在的人们都喜欢用自己手机里的相机来记录自己生活中的点滴美好,而拍照成为人们记录自己生活的最常用的一个方式,这样当时间过去也会记得自己之前曾去过哪些地方,可是照片多了之后也很烦恼,图片太多, ...

  9. 图片批量压缩方法及步骤

    图片批量压缩方法及步骤!平常我们会将手机拍摄的照片传输到电脑里保存,时间久了后电脑中会有大量的图片,这些图片大都是1M-2M的体积大小,这些图片会占用大量的电脑磁盘空间,可能会导致电脑变得很卡等现象. ...

  10. 【Python+图片切割+图片合并】基于Python的图片批量切割与合并(保持原像素不变,不会出现像素大小不匹配、填充黑边的问题)

    基于Python的图片批量切割与合并(保持原像素不变,不会出现像素大小不匹配.填充黑边的问题) 前言 效果图 1.批量读取文件 2.清空目标目录方法(配合切割图片方法使用) 3.批量切割图片(像素不足 ...

最新文章

  1. jquery设置属性值或移除属性
  2. windows stack based overflow
  3. [转]详解编译预处理
  4. 自己整理的shell笔记
  5. CIO客观评价SAP和用友的差异
  6. 企业中两个重要而又容易被忽视的角色,互联网营销
  7. cdoj 1246 每周一题 拆拆拆~ 分解质因数
  8. 学之思开源考试系统 - 使用手册
  9. 虚拟跳线软件干什么用的_疯狂刷单!用违法软件生成虚拟手机号,“骑手”半年“刷单”牟利60余万,百米内竟有万笔订单 | 申晨间...
  10. java池_java中的各种池
  11. ad19电气规则检查_铁路机车操作规则(铁运2012281号)
  12. 深度学习2.0-6.tensorflow的高阶操作之合并与分割
  13. 杜拉拉升职记摘录:早日实现退休理想--你需要眼光和资格
  14. 猿创征文|时间序列分析算法之平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现
  15. Falsy Bouncer(算法)
  16. 【渝粤题库】陕西师范大学200111中学语文教学法 作业(专升本)
  17. 系统分析师学习笔记(九)
  18. 文献记录(part109)--Self-Representation Based Unsupervised Exemplar Selection in a Union of Subspaces
  19. dos命令实现循环求和
  20. python的控制结构之For、While、If循环问题

热门文章

  1. 身份证实名认证设计、实现思路
  2. 性能优化 ---启动优化
  3. 读《王二的经济学故事》
  4. centos7.4源码安装nginx-1.16.1 及NGINX最全配置 缓存缩略图4层转发
  5. VC++连接wifi功能(有密码)源代码
  6. MYS-6ULX-IOT 开发板测评——Yocto 创建嵌入式 Linux 发行版
  7. DGL官方教程--图注意力网络(GAT)
  8. struct和union的区别和存储方式
  9. C++实现十进制转换
  10. 1156:求π的值(C C++)