首頁 >後端開發 >Python教學 >如何在保持縱橫比的同時使用 PIL 調整影像大小?

如何在保持縱橫比的同時使用 PIL 調整影像大小?

Linda Hamilton
Linda Hamilton原創
2024-12-13 17:23:10310瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn