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在多玩图片上下载妹子图的实现代码
Aug 13 Python
python调用cmd复制文件代码分享
Dec 27 Python
Python实现简单的可逆加密程序实例
Mar 05 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
Python 性能优化技巧总结
Nov 01 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
python中sort和sorted排序的实例方法
Aug 26 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Django执行源生mysql语句实现过程解析
Nov 12 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
?繁体转换的class
2006/10/09 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
VSCode下配置python调试运行环境的方法
2018/04/06 Python
django 发送手机验证码的示例代码
2018/04/25 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
鸿星尔克广告词
2014/03/21 职场文书
好的旅游活动方案
2014/08/19 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
工作收入住址证明
2014/10/28 职场文书
公务员政审个人总结
2015/02/12 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
行政诉讼答辩状
2015/05/21 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
React实现动效弹窗组件
2021/06/21 Javascript