Python按最大边比例调整图像大小
我刚开始学Python,所以这个问题很基础。我有一个以图片为主的网站,正在用Django开发。现在我想调整图片的大小,或者说我想减小图片的尺寸。网站上的图片有不同的尺寸,有些图片是宽度最大,有些是高度最大,我希望在不改变它们形状的情况下调整它们的大小。
下面是一些我网站上图片的尺寸示例。
第一张图片的宽度最大,第二张图片的高度最大,而且它们的尺寸都很大,所以需要调整大小,或者说这些图片需要减小尺寸。我使用了PIL库,代码如下。
from PIL import Image,ImageDraw, ImageFont, ImageEnhance
def image_resize(request,image_id):
photo = Photo.objects.get(pk=image_id)
img = Image.open(photo.photo.file)
image = img.resize((1000, 560), Image.ANTIALIAS)
image.save()
这个函数会把所有图片的宽度调整为1000,高度调整为560。但我不想把所有图片都调整成相同的宽度和高度,而是希望每张图片保持自己的形状,也就是说它们的形状保持不变,但图片的大小会被调整。我该怎么做呢?我对Python还很陌生。
2 个回答
0
我记得之前做过这个,没有遇到什么问题,只是我用了缩略图的方法,而不是调整大小。你可以试试这个方法。你不需要把 img 赋值给 image。你可以直接处理 img,然后保存处理后的结果。
# open img
img.thumbnail((1000,560), Image.ANTIALIAS)
# save img
4
你想让所有的图片宽度都变成1000吗?试试这个代码。它会把图片的宽度调整到最多1000(如果图片本身的宽度已经小于1000,那就不会有任何变化)。
def image_resize(request,image_id):
photo = Photo.objects.get(pk=image_id)
image = Image.open(photo.photo.file)
(w,h) = image.size
if (w > 1000):
h = int(h * 1000. / w)
w = 1000
image = image.resize((w, h), Image.ANTIALIAS)
image.save()