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中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
如何在Python中编写并发程序
Feb 27 Python
详解Python之unittest单元测试代码
Jan 24 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
python3实现逐字输出的方法
Jan 23 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
python的等深分箱实例
Nov 22 Python
python-视频分帧&amp;多帧合成视频实例
Dec 10 Python
Python之变量类型和if判断方式
May 05 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
Python使用openpyxl复制整张sheet
Mar 24 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继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
javascript实现数独解法
2015/03/14 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
python字符串的常用操作方法小结
2016/05/21 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
python查看数据类型的方法
2019/10/12 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
培训自我鉴定
2014/01/31 职场文书
校园公益广告语
2014/03/13 职场文书
公司授权委托书范本
2014/04/03 职场文书
房产代理公证处委托书
2014/04/04 职场文书
《火烧云》教学反思
2014/04/12 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
党性分析自查总结
2014/10/14 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
2014年终个人工作总结
2014/11/07 职场文书
学校捐书活动总结
2015/05/08 职场文书
工作报告范文
2019/06/20 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android