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学习教程之使用py2exe打包
Sep 24 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
浅谈python可视化包Bokeh
Feb 07 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
Django rest framework工具包简单用法示例
Jul 20 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python 类之间的参数传递方式
Dec 20 Python
pytorch中获取模型input/output shape实例
Dec 30 Python
python音频处理的示例详解
Dec 23 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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
西德产收音机
2021/03/01 无线电
多文件上传的例子
2006/10/09 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
加热夹克:RAVEAN
2018/10/19 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
2014年高三班主任工作总结
2014/12/05 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
小学新课改心得体会
2016/01/22 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB