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实现汉诺塔递归算法经典案例
Mar 01 Python
Python+django实现简单的文件上传
Aug 17 Python
python3设计模式之简单工厂模式
Oct 17 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
Python实现端口检测的方法
Jul 24 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
Python3操作MongoDB增册改查等方法详解
Feb 10 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
python实现画图工具
Aug 27 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 socket(fsockopen)的应用实例分析
2013/06/02 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
smarty中js的调用方法示例
2014/10/27 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
pandas表连接 索引上的合并方法
2018/06/08 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
详解Python中第三方库Faker
2020/09/25 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
DNA测试:Orig3n
2019/03/01 全球购物
生日寿宴答谢词
2014/01/19 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Python作用域和名称空间的详细介绍
2022/04/13 Python