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 自动安装 Rising 杀毒软件
Apr 24 Python
简单文件操作python 修改文件指定行的方法
May 15 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
python中logging包的使用总结
Feb 28 Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
matlab、python中矩阵的互相导入导出方式
Jun 01 Python
python不同系统中打开方法
Jun 23 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
Python实现京东抢秒杀功能
Jan 25 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中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php程序内部post数据的方法
2015/03/31 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
JS获取当前时间戳方法解析
2020/08/29 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
优秀求职信
2014/05/29 职场文书
人力资源管理求职信
2014/08/07 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
2014年法务工作总结
2014/12/11 职场文书
800字作文之大雪
2019/12/04 职场文书