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基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
python实现文件快照加密保护的方法
Jun 30 Python
numpy自动生成数组详解
Dec 15 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
python实例化对象的具体方法
Jun 17 Python
Python如何绘制日历图和热力图
Aug 07 Python
Python pymysql模块安装并操作过程解析
Oct 13 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
python 接收处理外带的参数方法
2018/12/03 Python
Python使用folium excel绘制point
2019/01/03 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
详解python之heapq模块及排序操作
2019/04/04 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Django多个app urls配置代码实例
2020/11/26 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
大专计算机个人求职的自我评价
2013/10/21 职场文书
安全生产管理责任书
2014/04/16 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
看上去很美观后感
2015/06/10 职场文书
七年级作文之英语老师
2019/10/28 职场文书