Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menggabungkan Imej Secara Mendatar dalam Python: Panduan Pantas

Cara Menggabungkan Imej Secara Mendatar dalam Python: Panduan Pantas

Barbara Streisand
Barbara Streisandasal
2024-10-26 09:41:02231semak imbas

How to Concatenate Images Horizontally in Python: A Quick Guide

Menggabungkan Imej Secara Mendatar dengan Python

Artikel ini bertujuan untuk menangani cabaran menggabungkan berbilang imej JPEG secara mendatar menggunakan Python.

Pernyataan Masalah

Pertimbangkan senario di mana tiga imej, setiap satu dengan dimensi 148 x 95, perlu dicantum secara mendatar untuk membentuk satu imej. Percubaan sebelumnya menggunakan kod berikut menghadapi masalah:

<code class="python">import sys
from PIL import Image

list_im = ['Test1.jpg','Test2.jpg','Test3.jpg']

new_im = Image.new('RGB', (444,95))

for elem in list_im:
    for i in xrange(0,444,95):
        im=Image.open(elem)
        new_im.paste(im, (i,0))
new_im.save('test.jpg')</code>

Cadangan Penyelesaian

Untuk menangani masalah tersebut, kod yang dipertingkatkan disediakan di bawah:

<code class="python">import sys
from PIL import Image

images = [Image.open(x) for x in ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']]
widths, heights = zip(*(i.size for i in images))

total_width = sum(widths)
max_height = max(heights)

new_im = Image.new('RGB', (total_width, max_height))

x_offset = 0
for im in images:
  new_im.paste(im, (x_offset,0))
  x_offset += im.size[0]

new_im.save('test.jpg')</code>

Penyelesaian termasuk pindaan utama berikut:

  • Penggunaan zip(*(i.saiz untuk i dalam imej)) untuk menentukan lebar dan ketinggian keseluruhan imej gabungan
  • Penggantian gelung bersarang yang bermasalah dengan yang dipermudahkan yang berulang melalui setiap imej dalam senarai
  • Pelarasan kedudukan tampal berdasarkan lebar setiap imej untuk mengelakkan pertindihan tidak sengaja.

Peruntukan untuk mengelakkan dimensi imej pengekodan keras dan menentukan dimensi dalam satu baris (kedua-duanya disebut dalam maklumat tambahan) adalah wujud kepada kod yang dipertingkatkan.

Penjelasan

Kod yang dikemas kini terlebih dahulu mengira lebar dan ketinggian semua imej input dan menggunakan nilai ini untuk menentukan jumlah lebar dan ketinggian maksimum imej output.

Seterusnya, ia mencipta imej kosong dengan dimensi yang dikira.

Kemudian, ia berulang melalui setiap imej input, menampal setiap satu pada imej kosong pada x-offset yang sesuai (bermula dari 0), dan menambah x-offset selepas setiap tampal untuk memberi laluan kepada imej seterusnya.

Akhir sekali, imej gabungan disimpan ke nama fail yang ditentukan.

Atas ialah kandungan terperinci Cara Menggabungkan Imej Secara Mendatar dalam Python: Panduan Pantas. 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