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操作CouchDB的方法
Oct 08 Python
git进行版本控制心得详谈
Dec 10 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Python处理文本换行符实例代码
Feb 03 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
python用插值法绘制平滑曲线
Feb 19 Python
Python目录和文件处理总结详解
Sep 02 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
简单的命令查看安装的python版本号
Aug 28 Python
python中 .npy文件的读写操作实例
Apr 14 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如何得到当前页和上一页的地址?
2006/11/27 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
javascript Event对象详解及使用示例
2013/11/22 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
Element Input组件分析小结
2018/10/11 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
js实现打字小游戏
2019/12/17 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
一看就懂得Python的math模块
2018/10/21 Python
Python数据集切分实例
2018/12/08 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
导致python中import错误的原因是什么
2020/07/01 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
关于中国梦的演讲稿
2014/04/23 职场文书
综合实践活动总结
2014/05/05 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
西柏坡导游词
2015/02/05 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
欢迎新生标语2015
2015/07/16 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers