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 时间操作例子和时间格式化参数小结
Apr 24 Python
跟老齐学Python之集合(set)
Sep 24 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
May 29 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
PyQt5显示GIF图片的方法
Jun 17 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
Django框架实现在线考试系统的示例代码
Nov 30 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判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
php实现的验证码文件类实例
2015/06/18 PHP
js的event详解。
2006/09/06 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
js Function类型
2011/12/04 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
vue+eslint+vscode配置教程
2019/08/09 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
win10安装python3.6的常见问题
2020/07/01 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
会计专业求职信范文
2014/03/16 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
岗位聘任报告
2015/03/02 职场文书
《日月潭》教学反思
2016/02/20 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python