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抓取网页中图片并保存到本地
Dec 01 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
对python中的高效迭代器函数详解
Oct 18 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
Python3实现的反转单链表算法示例
Mar 08 Python
Python3.5字符串常用操作实例详解
May 01 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
Python生成器next方法和send方法区别详解
May 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
linux下安装easy_install的方法
2013/02/10 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
企业演讲稿范文
2013/12/28 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
诉前财产保全担保书
2014/05/20 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2015年材料员工作总结
2015/04/30 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
Python基础之tkinter图形化界面学习
2021/04/29 Python
Go语言应该什么情况使用指针
2021/07/25 Golang