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_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
python实现雨滴下落到地面效果
Jun 21 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
Python中关于浮点数的冷知识
Sep 22 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
10个python爬虫入门实例(小结)
Nov 01 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
URL Rewrite的设置方法
2007/01/02 PHP
php单件模式结合命令链模式使用说明
2008/09/07 PHP
apache php模块整合操作指南
2012/11/16 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
对python中的pop函数和append函数详解
2018/05/04 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python中私有属性的定义方式
2020/03/05 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
高中生职业规划范文
2014/03/09 职场文书
演讲稿格式范文
2014/05/19 职场文书
先进党支部事迹材料
2014/12/24 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
走近毛泽东观后感
2015/06/04 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript