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读写ini文件示例(python读写文件)
Mar 25 Python
python 远程统计文件代码分享
May 14 Python
Python模拟百度登录实例详解
Jan 20 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
python 输出上个月的月末日期实例
Apr 11 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python多维数组切片方法
2018/04/13 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
欢迎横幅标语
2014/06/17 职场文书
兽医医药专业求职信
2014/07/27 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
道歉情书大全
2015/05/12 职场文书
《火烧云》教学反思
2016/02/23 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python