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设置默认编码为utf8的方法
Jul 01 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
Django中ORM外键和表的关系详解
May 20 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
详解Python打包分发工具setuptools
Aug 05 Python
python同时替换多个字符串方法示例
Sep 17 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
python判断变量是否为列表的方法
Sep 17 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
PHP静态新闻列表自动生成代码
2007/06/14 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
centos系统升级python 2.7.3
2014/07/03 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
python DataFrame 取差集实例
2019/01/30 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
汽车工程专业应届生求职信
2013/10/19 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
广播体操比赛主持词
2015/06/29 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python