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列表list数组array用法实例解析
Oct 28 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
python简单实现基数排序算法
May 16 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
python获取点击的坐标画图形的方法
Jul 09 Python
Python Django框架模板渲染功能示例
Nov 08 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
最常用的8款PHP调试工具
2014/07/06 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
详解vue 组件
2020/06/11 Javascript
python实现逻辑回归的方法示例
2017/05/02 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
python图书管理系统
2020/04/05 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
python str字符串转uuid实例
2020/03/03 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
《鞋匠的儿子》教学反思
2014/03/02 职场文书
聘任书的格式及模板
2019/10/28 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
MongoDB使用场景总结
2022/02/24 MongoDB