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 相关文章推荐
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
Python 中的Selenium异常处理实例代码
May 03 Python
django表单实现下拉框的示例讲解
May 29 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
python flask框架实现传数据到js的方法分析
Jun 11 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Python requests获取网页常用方法解析
Feb 20 Python
Python3如何判断三角形的类型
Apr 12 Python
Python存储读取HDF5文件代码解析
Nov 25 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
简单的js表格操作
2016/09/24 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
Python迭代器和生成器介绍
2015/03/06 Python
django实现分页的方法
2015/05/26 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
python多任务之协程的使用详解
2019/08/26 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
python 爬取疫情数据的源码
2020/02/09 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
庆祝国庆节标语
2014/10/09 职场文书
诉讼授权委托书
2014/10/15 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
婚礼长辈答谢词
2015/09/29 职场文书