编程语言
首页 > 编程语言> > python PIL的Image.resize()和Image.thumbnail()函数的区别

python PIL的Image.resize()和Image.thumbnail()函数的区别

作者:互联网

Image.resize()函数用于修改图片的尺寸。

Image.thumbnail()函数用于制作当前图片的缩略图。

Image.resize

from PIL import Image

img2 = Image.open('./1.jpg')
print("初始尺寸",img2.size)
img2.resize((128,128))
print("Image.resize",img2.size)

# 初始尺寸 (500, 336)
# Image.resize (500, 336)

Image.thumbnail

from PIL import Image

img = Image.open('./1.jpg')
print("初始尺寸",img.size)
img.thumbnail((128,128))
print("默认缩放NEARESET",img.size)
img.thumbnail((127,127),Image.BILINEAR)
print("BILINEAR",img.size)
img.thumbnail((126,126),Image.BICUBIC)
print("BICUBIC",img.size)
img.thumbnail((125,125),Image.ANTIALIAS)
print("ANTIALIAS",img.size)

# 初始尺寸 (500, 336)
# 默认缩放NEARESET (128, 86)
# BILINEAR (127, 85)
# BICUBIC (126, 84)
# ANTIALIAS (125, 83)

差别

细心的同学应该发现了 Image.thumbnail 之后的图片出现“设定大小和输出大小不一致”的这个情况,而 Image.resize 就不是这样的,为什么会这样呢?这要从两个函数各自的特性说起:

这两个函数都是对图片进行缩放,但是存在区别的:

from PIL import Image

img = Image.open('./1.jpg')
print("thumbnail前的尺寸", img.size)
img.thumbnail((128, 128))
# img3 = thumbnail.thumbnail((128,128))
# print("thumbnail后的尺寸", img3.size)
# AttributeError: 'NoneType' object has no attribute 'size'
img.save("thumbnail.jpg")
img_thumbnail = Image.open('./thumbnail.jpg')
print("thumbnail后的尺寸", img_thumbnail.size)
img_thumbnail.show()

print('* -' * 15)

img2 = Image.open('./1.jpg')
print("resize前的尺寸", img2.size)
img2 = img2.resize((128, 128))
img2.save("resized.jpg")
img_resize = Image.open('./resized.jpg')
print("resize后的尺寸", img_resize.size)
img_resize.show()

# thumbnail前的形状 (500, 336)
# thumbnail后的形状 (128, 86)
# * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -
# resize前的形状 (500, 336)
# resize后的形状 (128, 128)

原始图片
在这里插入图片描述
thumbnail后的图片:
在这里插入图片描述
resize后的图片
在这里插入图片描述

img.thumbnail((128, 128))
# img3 = thumbnail.thumbnail((128,128))
# print("thumbnail后的尺寸", img3.size)
# AttributeError: 'NoneType' object has no attribute 'size'
img.save("thumbnail.jpg")

img2 = img2.resize((128, 128))
img2.save("resized.jpg")

标签:PIL,img,python,Image,128,thumbnail,resize,size
来源: https://blog.csdn.net/TeFuirnever/article/details/90597048