Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengekalkan Nisbah Aspek Apabila Mengubah Saiz Imej dengan PIL?

Bagaimana untuk Mengekalkan Nisbah Aspek Apabila Mengubah Saiz Imej dengan PIL?

DDD
DDDasal
2024-12-06 18:29:14536semak imbas

How to Maintain Aspect Ratio When Resizing Images with PIL?

Memelihara Nisbah Aspek semasa Mengubah Saiz Imej Menggunakan PIL

Dalam Perpustakaan Pengimejan Python (PIL), mengubah saiz imej sambil mengekalkan nisbah aspeknya boleh dicapai melalui pengiraan tertentu. Apabila mencipta lakaran kecil, adalah penting untuk mengekalkan perkadaran asal imej.

Penyelesaian:

  1. Tentukan saiz maksimum: Tentukan dimensi maksimum untuk imej yang diubah saiz.
  2. Kira ubah saiz nisbah: Kira nisbah dengan mengambil minimum (lebar maksimum/lebar asal) dan (tinggi maksimum/tinggi asal).
  3. Tentukan saiz yang betul: Darab saiz asal imej dengan nisbah yang dikira untuk mendapatkan dimensi yang sesuai untuk mengubah saiz.

Untuk kesederhanaan, PIL menyediakan kaedah Image.thumbnail untuk mengendalikan saiz semula sambil mengekalkan nisbah bidang:

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}'")

Dalam skrip ini, imej diubah saiz kepada saiz lakaran kecil (128, 128) menggunakan pensampelan semula Lanczos untuk kualiti imej yang dipertingkatkan .

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Nisbah Aspek Apabila Mengubah Saiz Imej dengan PIL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn