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 装饰器功能以及函数参数使用介绍
Jan 27 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
跟老齐学Python之画圈还不简单吗?
Sep 20 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
python中随机函数random用法实例
Apr 30 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python 用__new__方法实现单例的操作
Dec 11 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获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python实现猜数字游戏
2020/03/25 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
2014年关工委工作总结
2014/11/17 职场文书
大专护理专业自荐信
2015/03/25 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
python脚本框架webpy模板控制结构
2021/11/20 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android