python实现批量按比例缩放图片效果


Posted in Python onMarch 30, 2018

本文实例为大家分享了python实现批量按比例缩放图片的具体代码,供大家参考,具体内容如下

把脚本文件放在要缩放的文件夹下面。

双击运行脚本,输入要缩放的系数。脚本会在当前目录下创建一个scaledImg_xxxx文件夹,如果已经存在,会强制删除,如果删除失败会提示手动删除这个文件夹,再双击运行就可以了。

resizeImg.py

#!/usr/bin/python 
# -*- coding:utf8 -*- 
 
#author@skillart www. 
 
import os 
import shutil 
import Image  
to_scale = 0.5 
processIndex = 0 
def resizeImg(imgPath): 
  global processIndex 
  fileList = [] 
  files = os.listdir(imgPath) 
  for f in files: 
    filePath = imgPath + os.sep + f 
    if(os.path.isfile(filePath)): 
      fileList.append(f) 
    elif(os.path.isdir(filePath)): 
      resizeImg(filePath) 
  for fileName in fileList: 
    processIndex+=1 
    fileFullName = imgPath+os.sep+fileName 
    suffix = fileName[fileName.rfind('.'):] 
    if(suffix == '.png' or suffix == '.jpg'): 
      print 'processing the '+str(processIndex)+'th file:'+fileFullName 
      img = Image.open(fileFullName) 
      w,h = img.size 
      tw = int(w * to_scale) 
      th = int(h * to_scale) 
      reImg = img.resize((tw,th),Image.ANTIALIAS) 
      reImg.save(fileFullName) 
      del reImg 
if __name__ == '__main__': 
  scaleStr = raw_input('input to_scale: ') 
  to_scale = float(scaleStr) 
  scaledPath = '.\\scaledImg_xxxx'; 
  if os.path.isdir(scaledPath): 
    flag = raw_input('the output dir is exist, sure to del it(y/n)') 
    if flag == 'y' or flag == 'yes': 
      try:   
        shutil.rmtree(scaledPath) 
      finally: 
        raw_input('remove dir failed , please removed the dir manually.') 
    else: 
      exit 
  shutil.copytree('.\\',scaledPath)   
  resizeImg(scaledPath) 
  raw_input("resize success")

生成Icon

generateIcon.py

#!/usr/bin/python 
# -*- coding:utf8 -*- 
 
#author@skillart www. 
 
import os 
import shutil 
import Image  
def resizeImg(imgPathName): 
  print imgPathName 
  iconDict = {'Icon.png':'72x72','Icon@2x.png':'144x144','Icon-29.png':'29x29','Icon-40.png':'40x40','Icon-50.png':'50x50', 
  'Icon-57.png':'57x57', 'Icon-58.png':'58x58','Icon-72.png':'72x72','Icon-76.png':'76x76','Icon-80.png':'80x80', 
  'Icon-100.png':'100x100','Icon-114.png':'114x114','Icon-120.png':'120x120','Icon-144.png':'144x144','Icon-152.png':'152x152', 
  'FlipCycleTileLarge.png':'300x300','FlipCycleTileMedium.png':'300x300','FlipCycleTileSmall.png':'300x300', 
  'IconicTileMediumLarge.png':'300x300','IconicTileSmall.png':'300x300','ApplicationIcon.png':'300x300','icon.png':'72x72'} 
  if os.path.isfile(imgPathName) == False: 
    print('open imgPathName failed , check the' + imgPathName + "is exist!") 
    exit 
  img = Image.open(imgPathName) 
  index = imgPathName.rfind(os.sep) 
  prefix = imgPathName[:index+1] 
  for key, value in iconDict.items(): 
    # print key,value 
    v_split = value.split('x') 
    w,h = int(v_split[0]),int(v_split[1]) 
    fileName = prefix + key 
    reImg = img.resize((w,h),Image.ANTIALIAS) 
    reImg.save(fileName) 
    print fileName,w,h 
  del img 
if __name__ == '__main__': 
  scaledPath = '.\\createIcon' 
  if os.path.isdir(scaledPath): 
    flag = raw_input('the output dir is exist, sure to del it(y/n)') 
    if flag == 'y' or flag == 'yes': 
      try:   
        shutil.rmtree(scaledPath) 
      finally: 
        raw_input('remove dir failed , please removed the dir manually.') 
    else: 
      exit 
  shutil.copytree('.\\',scaledPath)  
  fileList = [] 
  files = os.listdir(scaledPath) 
  for f in files: 
    filePath = scaledPath + os.sep + f 
    if os.path.isfile(filePath) : 
      suffix = filePath[filePath.rfind('.'):] 
      if(suffix == '.png' or suffix == '.jpg'): 
        print filePath 
        resizeImg(filePath) 
        break 
  raw_input("resize success")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python随机生成数模块random使用实例
Apr 13 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
对python添加模块路径的三种方法总结
Oct 16 Python
使用python判断你是青少年还是老年人
Nov 29 Python
Python Excel处理库openpyxl使用详解
May 09 Python
pymysql模块的操作实例
Dec 17 Python
python将图片转base64,实现前端显示
Jan 09 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
Python 多线程之threading 模块的使用
Apr 14 Python
python放大图片和画方格实现算法
Mar 30 #Python
python实现数独游戏 java简单实现数独游戏
Mar 30 #Python
简单实现python数独游戏
Mar 30 #Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 #Python
windows环境下tensorflow安装过程详解
Mar 30 #Python
Python切片工具pillow用法示例
Mar 30 #Python
Python实现OpenCV的安装与使用示例
Mar 30 #Python
You might like
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
如何使用php实现评委评分器
2015/07/31 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python实现外卖信息管理系统
2018/01/11 Python
python opencv之SIFT算法示例
2018/02/24 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
pytorch 预训练层的使用方法
2019/08/20 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
python获取引用对象的个数方式
2019/12/20 Python
电子狗项圈:eDog Australia
2019/12/04 全球购物
导游个人求职信范文
2014/03/23 职场文书
公司经理任命书
2014/06/05 职场文书
教师师德工作总结2015
2015/07/22 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
Python读写yaml文件
2022/03/20 Python
go goth封装第三方认证库示例详解
2022/08/14 Golang