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调用C/C++动态链接库的方法详解
Jul 22 Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
详细解读Python中的__init__()方法
May 02 Python
python读取word文档的方法
May 09 Python
Python处理字符串之isspace()方法的使用
May 19 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
python反编译学习之字节码详解
May 19 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
pyinstaller打包找不到文件的问题解决
Apr 15 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生成文件
2007/01/15 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
Python复数属性和方法运算操作示例
2017/07/21 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
浅析python redis的连接及相关操作
2019/11/07 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
公司捐款倡议书
2014/05/14 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
文员岗位职责范本
2015/04/16 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
白银帝国观后感
2015/06/17 职场文书
食堂管理制度范本
2015/08/04 职场文书
Elasticsearch 配置详解
2022/04/19 Java/Android