使用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