python实现按长宽比缩放图片


Posted in Python onJune 07, 2018

使用python按图片固定长宽比缩放图片到指定图片大小,空白部分填充为黑色。

代码

# -*- coding: utf-8 -*-

from PIL import Image

class image_aspect():

 def __init__(self, image_file, aspect_width, aspect_height):
  self.img = Image.open(image_file)
  self.aspect_width = aspect_width
  self.aspect_height = aspect_height
  self.result_image = None

 def change_aspect_rate(self):
  img_width = self.img.size[0]
  img_height = self.img.size[1]

  if (img_width / img_height) > (self.aspect_width / self.aspect_height):
   rate = self.aspect_width / img_width
  else:
   rate = self.aspect_height / img_height

  rate = round(rate, 1)
  print(rate)
  self.img = self.img.resize((int(img_width * rate), int(img_height * rate)))
  return self

 def past_background(self):
  self.result_image = Image.new("RGB", [self.aspect_width, self.aspect_height], (0, 0, 0, 255))
  self.result_image.paste(self.img, (int((self.aspect_width - self.img.size[0]) / 2), int((self.aspect_height - self.img.size[1]) / 2)))
  return self

 def save_result(self, file_name):
  self.result_image.save(file_name)


if __name__ == "__main__":
 image_aspect("./source/test.jpg", 1920, 1080).change_aspect_rate().past_background().save_result("./target/test.jpg")

感言

有兴趣的朋友可以将图片路径,长宽值,背景颜色等参数化
封装成api做为个公共服务

本文源码下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现对一个完整url进行分割的方法
Apr 29 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
python实现图片文件批量重命名
Mar 23 Python
Django框架使用mysql视图操作示例
May 15 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
Python制作春联的示例代码
Jan 22 Python
python实现批量修改图片格式和尺寸
Jun 07 #Python
python实现批量图片格式转换
Jun 16 #Python
python脚本实现验证码识别
Jun 07 #Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 #Python
使用Python处理Excel表格的简单方法
Jun 07 #Python
python实现验证码识别功能
Jun 07 #Python
通过Pandas读取大文件的实例
Jun 07 #Python
You might like
用Flash图形化数据(一)
2006/10/09 PHP
《APMServ 5.1.2》使用图解
2006/10/23 PHP
PHP语法速查表
2006/12/06 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
英语国培研修感言
2014/02/13 职场文书
职工代表大会主持词
2014/04/01 职场文书
初三学生个人自我评定
2014/04/06 职场文书
仓库规划计划书
2014/04/28 职场文书
优秀会计求职信
2014/07/04 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
2014年医生工作总结
2014/11/21 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
公司安全管理制度范本
2015/08/05 职场文书