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导出DBF文件到Excel的方法
Jul 25 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
python 垃圾收集机制的实例详解
Aug 20 Python
Python分析学校四六级过关情况
Nov 22 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 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伪静态页面函数附使用方法
2008/06/20 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
javascript中的this详解
2014/12/08 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python的另外几种语言实现
2015/01/29 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
大一新生期末自我评价
2014/09/12 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
校友回访母校寄语
2015/02/26 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书