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访问MySQL封装的常用类实例
Nov 11 Python
Python与Redis的连接教程
Apr 22 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
python最长回文串算法
Jun 04 Python
Flask-Mail用法实例分析
Jul 21 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
celery4+django2定时任务的实现代码
Dec 23 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
python实现简单颜色识别程序
Feb 19 Python
利用scikitlearn画ROC曲线实例
Jul 02 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的性能
2013/10/30 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
js身份证验证超强脚本
2008/10/26 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
JS实现多选框的操作
2020/06/24 Javascript
利用Python实现颜色色值转换的小工具
2016/10/27 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
详解Python IO口多路复用
2020/06/17 Python
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
白血病募捐倡议书
2014/05/14 职场文书
机械操作工岗位职责
2014/08/08 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
单位租房协议书范本
2014/12/04 职场文书