ホームページ >バックエンド開発 >Python チュートリアル >PIL で画像のサイズを変更するときにアスペクト比を維持するにはどうすればよいですか?

PIL で画像のサイズを変更するときにアスペクト比を維持するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-06 18:29:14531ブラウズ

How to Maintain Aspect Ratio When Resizing Images with PIL?

PIL を使用して画像のサイズを変更しながらアスペクト比を維持する

Python Imaging Library (PIL) では、アスペクト比を維持しながら画像のサイズを変更できます。特定の計算によって達成されます。サムネイルを作成するときは、画像の元の比率を維持することが重要です。

解決策:

  1. 最大サイズを定義します: 決定サイズ変更された画像の最大寸法。
  2. サイズ変更の計算比率: (最大幅/元の幅) と (最大高さ/元の高さ) の最小値を取得して比率を計算します。
  3. 適切なサイズを決定します: 元のサイズを乗算します。サイズ変更に適切な寸法を取得するために、計算された比率で画像を作成します。

簡単にするために、PIL はアスペクト比を維持しながらサイズ変更を処理する Image.thumbnail メソッド:

import os, sys
from PIL import Image

size = (128, 128) # Desired thumbnail size

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.Resampling.LANCZOS)
            im.save(outfile, "JPEG")
        except IOError:
            print(f"Cannot create thumbnail for '{infile}'")

このスクリプトでは、画質を向上させるために Lanczos リサンプリングを使用して、画像のサイズがサムネイル サイズ (128, 128) に変更されます。

以上がPIL で画像のサイズを変更するときにアスペクト比を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。