Menggabungkan Imej Secara Mendatar dalam Python
Artikel ini membincangkan isu menggabungkan berbilang imej JPEG secara mendatar dalam Python.
Masalah:
Pengguna mempunyai tiga imej yang sama dimensi (148 x 95), dan cuba menggabungkannya secara mendatar menggunakan kod yang disediakan. Walau bagaimanapun, output mempunyai imej separa tambahan yang bertindih dengan sub-imej sebelumnya.
Penyelesaian:
Untuk menyelesaikan isu ini, kami boleh menggunakan kod diubah suai berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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( 'combined_horizontally.jpg' )</code>
|
Salin selepas log masuk
Kod ini mencapai perkara berikut:
- Membuka imej input dan menentukan lebar dan ketinggiannya.
- Mengira jumlah lebar dan ketinggian maksimum imej gabungan.
- Mencipta imej baharu dengan dimensi yang dikira.
- Tampal setiap imej input secara mendatar ke dalam imej baharu dengan offset yang sesuai.
- Menyimpan imej gabungan sebagai combined_horizontally.jpg.
Pertimbangan Tambahan:
- Kod menentukan dimensi imej secara dinamik, membolehkannya mengendalikan imej dengan saiz yang berbeza-beza.
- Ia menentukan dimensi pada satu baris, menjadikannya mudah untuk melaraskan jika perlu.
- Dengan menggunakan fungsi maks untuk menentukan ketinggian maks, imej gabungan akan menampung semua imej input, walaupun ia mempunyai ketinggian yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Imej Secara Mendatar dalam Python Tanpa Isu Bertindih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!