首页 > 后端开发 > Python教程 > 如何在保持纵横比的同时使用 PIL 调整图像大小?

如何在保持纵横比的同时使用 PIL 调整图像大小?

Linda Hamilton
发布: 2024-12-13 17:23:10
原创
310 人浏览过

How Can I Resize Images with PIL While Maintaining Aspect Ratio?

使用 PIL 调整图像大小,同时保留纵横比

Python 图像库 (PIL) 提供了一套全面的图像处理函数。一种有用的操作是调整图像大小,但许多开发人员在保持原始宽高比方面遇到了挑战。本文深入研究了这个问题,并提供了确保按比例调整图像大小的解决方案。

问题

在尝试创建缩略图时,用户偶然发现了以下挑战:

是否存在我缺少一种明显的方法来做到这一点? 我只是想制作缩略图。

解决方案

要在保留图像宽高比的同时调整图像大小,请考虑以下步骤:

  1. 确定最大尺寸: 确定缩略图的最大宽度和高度。这些值定义所需的输出大小。
  2. 计算调整大小比率:通过将最大宽度除以原始宽度以及最大高度除以原始高度来计算调整大小比率。这些比率中较小的一个将确保按比例调整大小。
  3. 计算新大小:通过将原始大小乘以计算的调整大小比率来确定图像的新大小。
  4. PIL 库方法: PIL 通过 Image.thumbnail 方法提供了一种简化的方法。此方法直接修改图片,如有需要建议复制一份:
import os, sys
from PIL import Image

size = 128, 128  # Define the maximum size of the thumbnail

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"  # Generate the output filename
    if infile != outfile:
        try:
            im = Image.open(infile)
            im_copy = im.copy()  # Create a copy to avoid modifying the original image
            im_copy.thumbnail(size, Image.Resampling.LANCZOS)  # Resize the image
            im_copy.save(outfile, "JPEG")  # Save the resized image
        except IOError:
            print(f"cannot create thumbnail for '{infile}'")  # Handle any exceptions
登录后复制

以上是如何在保持纵横比的同时使用 PIL 调整图像大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板