Python实现图片尺寸缩放脚本


Posted in Python onMarch 10, 2018

最近由于网站对图片尺寸的需要,用python写了个小脚本,方便进行图片尺寸的一些调整,特记录如下:

# coding=utf-8 
import Image 
import shutil 
import os 
 
 
class Graphics: 
 infile = 'D:\\myimg.jpg' 
 outfile = 'D:\\adjust_img.jpg' 
 
 @classmethod 
 def fixed_size(cls, width, height): 
  """按照固定尺寸处理图片""" 
  im = Image.open(cls.infile) 
  out = im.resize((width, height),Image.ANTIALIAS) 
  out.save(cls.outfile) 
 
 @classmethod 
 def resize_by_width(cls, w_divide_h): 
  """按照宽度进行所需比例缩放""" 
  im = Image.open(cls.infile) 
  (x, y) = im.size 
  x_s = x 
  y_s = x/w_divide_h 
  out = im.resize((x_s, y_s), Image.ANTIALIAS) 
  out.save(cls.outfile) 
 
 @classmethod 
 def resize_by_height(cls, w_divide_h): 
  """按照高度进行所需比例缩放""" 
  im = Image.open(cls.infile) 
  (x, y) = im.size 
  x_s = y*w_divide_h 
  y_s = y 
  out = im.resize((x_s, y_s), Image.ANTIALIAS) 
  out.save(cls.outfile) 
 
 @classmethod 
 def resize_by_size(cls, size): 
  """按照生成图片文件大小进行处理(单位KB)""" 
  size *= 1024 
  im = Image.open(cls.infile) 
  size_tmp = os.path.getsize(cls.infile) 
  q = 100 
  while size_tmp > size and q > 0: 
   print q 
   out = im.resize(im.size, Image.ANTIALIAS) 
   out.save(cls.outfile, quality=q) 
   size_tmp = os.path.getsize(cls.outfile) 
   q -= 5 
  if q == 100: 
   shutil.copy(cls.infile, cls.outfile) 
 
 @classmethod 
 def cut_by_ratio(cls, width, height): 
  """按照图片长宽比进行分割""" 
  im = Image.open(cls.infile) 
  width = float(width) 
  height = float(height) 
  (x, y) = im.size 
  if width > height: 
   region = (0, int((y-(y * (height / width)))/2), x, int((y+(y * (height / width)))/2)) 
  elif width < height: 
   region = (int((x-(x * (width / height)))/2), 0, int((x+(x * (width / height)))/2), y) 
  else: 
   region = (0, 0, x, y) 
 
  #裁切图片 
  crop_img = im.crop(region) 
  #保存裁切后的图片 
  crop_img.save(cls.outfile)

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

Python 相关文章推荐
Python中的XML库4Suite Server的介绍
Apr 14 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
django之常用命令详解
Jun 30 Python
python实现简单flappy bird
Dec 24 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
Django模型中字段属性choice使用说明
Mar 30 Python
pycharm安装及如何导入numpy
Apr 03 Python
Python 操作SQLite数据库的示例
Oct 16 Python
Python3读写ini配置文件的示例
Nov 06 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python之基础函数案例详解
Aug 30 Python
TensorFlow平台下Python实现神经网络
Mar 10 #Python
python构建深度神经网络(续)
Mar 10 #Python
python构建深度神经网络(DNN)
Mar 10 #Python
Python使用numpy实现BP神经网络
Mar 10 #Python
python实现日常记账本小程序
Mar 10 #Python
python实现简单神经网络算法
Mar 10 #Python
TensorFlow saver指定变量的存取
Mar 10 #Python
You might like
php实现mysql事务处理的方法
2014/12/25 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
javascript常用对话框小集
2013/09/13 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
webpack多页面开发实践
2017/12/18 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
python3+PyQt5实现柱状图
2018/04/24 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
高中运动会广播稿
2014/09/16 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
社区党支部承诺书
2015/04/29 职场文书
好人好事新闻稿
2015/07/17 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书