使用python按图片固定长宽比缩放图片到指定图片大小,空白部分填充为黑色。
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# -*- 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做为个公共服务
本文源码下载
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.huuinn.com/archives/507