!/usr/bin/python
import os
import cPickle as p
import re
import Image def imageCompre(imagedir = '.', imagelistfile="image.data"): datafile = imagedir+'/'+imagelistfile
allowImageType = ['jpg','jpeg','gif','png']
pre = re.compile('^big|^sml|^mid*'); if os.path.isfile(datafile):
f = file(datafile)
imagelist = p.load(f)
f.close()
else:
imagelist = [] for item in os.listdir(imagedir):
if item:
if os.path.isdir(imagedir+"/"+item):
imageCompre(imagedir+"/"+item,'image.data')
else:
if item.split('.')[-1] in allowImageType and item not in imagelist and not pre.match(item):
imagelist.append(item);
#convert image file
convertImage(imagedir,item)
#update image.data
if imagelist:
f = file(datafile, 'w')
p.dump(imagelist, f)
f.close()
#delete imagelist tuple
del imagelist def convertImage(imagedir,item):
sourcefile = imagedir+"/"+item
im = Image.open(sourcefile); if im.size[0]<=120:
os.system("cp %s %s/big-%s -a" %(sourcefile,imagedir,item))
os.system("cp %s %s/mid-%s -a" %(sourcefile,imagedir,item))
os.system("cp %s %s/sml-%s -a" %(sourcefile,imagedir,item))
else:
if im.size[0] > 640:
os.system("convert -resize 640 %s %s/big-%s" %(sourcefile,imagedir,item))
os.system("convert -resize 400 %s %s/mid-%s" %(sourcefile,imagedir,item))
os.system("convert -resize 120 %s %s/sml-%s" %(sourcefile,imagedir,item))
elif 400 < im.size[0] <= 640:
os.system("cp %s %s/big-%s -a" %(sourcefile,imagedir,item))
os.system("convert -resize 400 %s %s/mid-%s" %(sourcefile,imagedir,item))
os.system("convert -resize 120 %s %s/sml-%s" %(sourcefile,imagedir,item))
elif 120 < im.size[0] <= 400:
os.system("cp %s %s/big-%s -a" %(sourcefile,imagedir,item))
os.system("cp %s %s/mid-%s -a" %(sourcefile,imagedir,item))
os.system("convert -resize 120 %s %s/sml-%s" %(sourcefile,imagedir,item)) #init image
dirRoot = raw_input('input images directory (default is ./)')
if len(dirRoot) == 0:
dirRoot = '.' if os.path.isdir(dirRoot):
imageCompre(dirRoot);
else:
print 'the directory %s is not exists' %dirRoot;

python+imageMagick写的一个压缩图片脚本的更多相关文章

  1. 基于七牛Python SDK写的一个批量下载脚本

    前言 上一篇基于七牛Python SDK写的一个同步脚本所写的脚本只支持上传,不支持文件下载. 虽然这个需求不太强烈,但有可能有人(在备份.迁移时)需要,而官方有没提供对应的工具,所以我就把这个功能也 ...

  2. Linux递归压缩图片脚本

    1 压缩图片 使用ImageMagick的convert命令进行压缩图片,一般只需要一个指定压缩质量的参数,比如: convert -quality 75 1.jpg 1_compress.jpg 可 ...

  3. 自己写的一个tomcat发布脚本

    闲来无事,就自己写一个shell脚本,方便自己以后在服务器上部署tomcat下的项目.我本地用maven打包,然后每次都要人工去切换一堆堆目录,有点繁琐,所以我写了下面的shell脚本. #! /bi ...

  4. 用Python 3写的一个Spider小爬虫(使用内置urllib模块and正则表达式)

    用Python写了一个Spider小爬虫,爬一爬斗鱼“王者荣耀”在线直播的主播及人气

  5. 把登录和退出功能单独写到一个公共.py脚本,其它用例test1,test2调用公共登录,退出函数

    公共登录/退出函数模块(login_exit.py): #coding:utf-8import timedef login(driver, username, password):#此处的driver ...

  6. 基于七牛Python SDK写的一个同步脚本

    需求背景 最近刚搭了个markdown静态博客,想把博客的图片放到云存储中. 经过调研觉得七牛可以满足我个人的需求,就选它了. 博客要引用图片就要先将图片上传到云上. 虽然七牛网站后台可以上传文件,但 ...

  7. python类似微信未读信息图片脚本

    其实就是实现一个效果,给一张图片,然后再右上角给出未读的信息数目,就像我们打开微信的时候,总是看到红点就忍不住想要点击去查看一样. 类似这种效果: 可以知道,图片是给定的,那么只要随机生成一个数字,然 ...

  8. Linux使用imagemagick的convert命令压缩图片、节省服务器空间

    一.安装: sudo apt-get install imagemagick 二.说明 imagemagick的命令convert可以完成此任务,其参数-resize用来改变图片尺寸,可以直接指定像素 ...

  9. Linux使用imagemagick的convert命令压缩图片,节省服务器空间

    1,安装imagemagick yum install ImageMagick 2,获取图片 find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500 ...

随机推荐

  1. CentOS 6.8 部署django项目二

    CentOS 6.8 部署django项目一 1.项目部署后发现部分页面的样式丢失,是因为在nginx中配置的static路径中未包含. 解决:在settinfs.py中添加: STATIC_ROOT ...

  2. dump_stack的简单使用 【转】

    转自:http://blog.chinaunix.net/uid-26403844-id-3361770.html http://blog.csdn.net/ryfjx6/article/detail ...

  3. 在Ubuntu中通过update-alternatives切换软件版本

    update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令.哪个软件版本,比如,我们在系统中同时安装了open jdk和sun ...

  4. SharePoint 2010 使用沙盒解决方案隐藏页面中的”元素”

    起因: 一朋友问我如何隐藏SharePoint 2010中"回收站"和"所有网站内容".我告诉他需要写点css,然后他就蒙圈了(他是英文专业). 解决方案: 一 ...

  5. Tomcat:在centos中做成自启动服务

    # 创建一个启动脚本文件,脚本内容见下 vi /etc/init.d/tomcat #!/bin/bash # /etc/rc.d/init.d/tomcat # init script for to ...

  6. compile php with openssl on mac osx error 填坑

    从源码手动编译 PHP 时出现如下错误:           Default   1 2 3 4 5 6 7 8 9 10 11 12 13 14 Undefined symbols for arch ...

  7. Android 自定义View二(深入了解自定义属性attrs.xml)

    1.为什么要自定义属性 要使用属性,首先这个属性应该存在,所以如果我们要使用自己的属性,必须要先把他定义出来才能使用.但我们平时在写布局文件的时候好像没有自己定义属性,但我们照样可以用很多属性,这是为 ...

  8. mpVue小程序全栈开发

    1.微信小程序,mpVue和wepy的对比 2. 3.es6中关于数组的一些方法 <script> let arr = [,,,] // 遍历 arr.forEach(v => { ...

  9. html标签之Object标签详解

    定义和用法 定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码. <object> ...

  10. linux之nginx

    一.知识点回顾 临时:关闭当前正在运行的 /etc/init.d/iptables stop 永久:关闭开机自启动 chkonfig iptables off ll /var/log/secure # ...