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中bisect模块用法实例
Sep 25 Python
Python通过select实现异步IO的方法
Jun 04 Python
Python的组合模式与责任链模式编程示例
Feb 02 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
使用TFRecord存取多个数据案例
Feb 17 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
Python序列化与反序列化相关知识总结
Jun 08 Python
python利用while求100内的整数和方式
Nov 07 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 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提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
js获取变量
2006/08/24 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
python Xpath语法的使用
2020/11/26 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
.net开发工程师面试题
2014/02/25 面试题
2014年转正工作总结
2014/11/08 职场文书
2016大学军训通讯稿
2015/11/25 职场文书