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

アスペクト比を維持しながら PIL を使用して画像のサイズを変更するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 17:23:10362ブラウズ

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

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

Python イメージング ライブラリ (PIL) は、包括的な画像操作関数のセットを提供します。便利な操作の 1 つは画像のサイズ変更ですが、多くの開発者は元のアスペクト比を維持するという課題に直面しています。この記事では、この問題を詳しく掘り下げ、画像のサイズを比例的に変更するための解決策を提供します。

問題

サムネイルを作成しようとしているときに、ユーザーは次の課題に遭遇しました:

はありますか?私が見逃しているこれを行うための明らかな方法はありますか? サムネイルを作成しようとしているだけです。

解決策

アスペクト比を維持しながら画像のサイズを変更するには、次の手順を検討してください。

  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 中国語 Web サイトの他の関連記事を参照してください。

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