Menggabungkan Gambar dengan Python

Pengeditan gambar sangat banyak digunakan untuk meningkatkan kualitas gambar. Dengan munculnya kamera seluler dan aplikasi pengeditan gambar, setiap pengguna seluler mengetahui cara mengedit gambar. Di antara fitur pengeditan gambar lainnya, membuat kolase adalah salah satu yang populer di mana banyak gambar digabungkan menjadi satu gambar. Jadi dalam artikel ini, kami akan mendemonstrasikan cara menggabungkan beberapa gambar dengan Python. Ini bisa berguna bagi Anda jika Anda berurusan dengan pengeditan gambar di aplikasi Python Anda.

Perpustakaan Python untuk Menggabungkan Gambar

Untuk menggabungkan beberapa gambar menjadi satu gambar, kita akan menggunakan Aspose.Imaging for Python. Ini adalah pustaka pemrosesan gambar yang kaya fitur untuk melakukan beberapa operasi pengeditan gambar dengan mudah. Anda dapat mengunduh perpustakaan atau menginstalnya menggunakan perintah berikut.

> pip install aspose-imaging-python-net 

Menggabungkan Banyak Gambar dengan Python

Ada dua cara untuk menggabungkan gambar: secara vertikal dan horizontal. Anda dapat memilih metode yang sesuai. Mari kita lihat cara menggabungkan gambar dengan kedua cara di bagian berikut.

Menggabungkan Gambar Secara Horizontal dengan Python

Di bawah ini adalah langkah-langkah untuk menggabungkan gambar secara horizontal menggunakan Aspose.Imaging for Python.

  • Mulailah dengan menentukan jalur gambar dalam larik.
  • Kemudian, hitung tinggi dan lebar gambar yang dihasilkan.
  • Buat objek kelas JpegOptions dan atur opsi yang diperlukan.
  • Buat objek kelas JpegImage dan inisialisasi dengan objek JpegOptions serta tinggi dan lebar gambar yang dihasilkan.
  • Ulangi daftar gambar dan muat setiap gambar menggunakan kelas RasterImage.
  • Buat Persegi Panjang untuk setiap gambar dan tambahkan ke gambar yang dihasilkan menggunakan metode JpegImage.saveargb32pixels() .
  • Tingkatkan lebar jahitan di setiap iterasi.
  • Terakhir, simpan gambar yang dihasilkan menggunakan metode JpegImage.save(string).

Di bawah ini adalah kode untuk menggabungkan gambar secara horizontal dengan Python.

import aspose.pycore as aspycore
from aspose.imaging import Image, Rectangle, RasterImage
from aspose.imaging.imageoptions import JpegOptions
from aspose.imaging.sources import FileCreateSource
from aspose.imaging.fileformats.jpeg import JpegImage
import os

# Tentukan folder
if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
image_paths = [os.path.join(data_dir, "template.jpg"), 
			   os.path.join(data_dir, "template.jpeg")]
output_path = os.path.join(data_dir, "result.jpg")
temp_file_path = os.path.join(data_dir, "temp.jpg")

# Dapatkan ukuran gambar yang dihasilkan
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# Hitung ukuran baru
new_width = 0
new_height = 0
for size in image_sizes:
	new_width += size.width
	new_height = max(new_height, size.height)
	
# Gabungkan gambar menjadi yang baru
temp_file_source = FileCreateSource(temp_file_path, delete_output)
with JpegOptions() as options:
	options.source = temp_file_source
	options.quality = 100
	with aspycore.as_of(Image.create(options, new_width, new_height), JpegImage) as new_image:
		stitched_width = 0
		for image_path in image_paths:
			with aspycore.as_of(Image.load(image_path), RasterImage) as image:
				bounds = Rectangle(stitched_width, 0, image.width, image.height)
				new_image.save_argb_32_pixels(bounds, image.load_argb_32_pixels(image.bounds))
				stitched_width += image.width
		new_image.save(output_path)

# Hapus file sementara
if delete_output:
	os.remove(output_path)
	if os.path.exists(temp_file_path):
		os.remove(temp_file_path)

Di bawah ini adalah gambar keluaran yang kami dapatkan setelah menggabungkan gambar secara horizontal.

Menggabungkan Gambar Secara Horizontal dengan Python

Gabungkan Gambar Secara Vertikal dengan Python

Sekarang mari kita lihat bagaimana menggabungkan beberapa gambar secara vertikal. Langkah-langkah menggabungkan gambar secara vertikal akan sama seperti pada bagian sebelumnya. Satu-satunya perbedaan adalah, kami akan menukar peran properti tinggi dan lebar.

Contoh kode berikut menunjukkan cara menggabungkan gambar dalam tata letak vertikal dengan Python.

import aspose.pycore as aspycore
from aspose.imaging import Image, Rectangle, RasterImage
from aspose.imaging.imageoptions import JpegOptions
from aspose.imaging.sources import StreamSource
from aspose.imaging.fileformats.jpeg import JpegImage
from aspose.imaging.extensions import StreamExtensions
import os
import functools

# Tentukan folder
if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
image_paths = [os.path.join(data_dir, "template.jpg"), os.path.join(data_dir, "template.jpeg")]
output_path = os.path.join(data_dir, "result.jpg")
temp_file_path = os.path.join(data_dir, "temp.jpg")

# Dapatkan ukuran gambar yang dihasilkan
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# Hitung ukuran baru
new_width = 0
new_height = 0
for size in image_sizes:
	new_height += size.height
	new_width = max(new_width, size.width)
	
# Gabungkan gambar menjadi yang baru
with StreamExtensions.create_memory_stream() as memory_stream:
	output_stream_source = StreamSource(memory_stream)
	with JpegOptions() as options:
		options.source = output_stream_source
		options.quality = 100
		with aspycore.as_of(Image.create(options, new_width, new_height), JpegImage) as new_image:
			stitched_height = 0
			for image_path in image_paths:
				with aspycore.as_of(Image.load(image_path), RasterImage) as image:
					bounds = Rectangle(0, stitched_height, image.width, image.height)
					new_image.save_argb_32_pixels(bounds, image.load_argb_32_pixels(image.bounds))
					stitched_height += image.height

			new_image.save(output_path)

# Hapus file sementara
if delete_output:
	os.remove(output_path)

Gambar berikut menunjukkan hasil penggabungan dua gambar serupa secara vertikal.

Menggabungkan Gambar Secara Vertikal dengan Python

Gabungkan Gambar PNG dengan Python

Langkah-langkah dan contoh kode yang diberikan di bagian sebelumnya adalah untuk menggabungkan gambar JPG, namun Anda mungkin perlu menggabungkan gambar PNG juga. Siapa Takut. Langkah-langkah dan contoh kode yang sama berlaku untuk gambar PNG dan satu-satunya perubahan adalah menggunakan kelas PngImage dan PngOptions, bukan JpegImage dan JpegOptions.

Dapatkan Pustaka Penggabungan Gambar Python Gratis

Anda bisa mendapatkan lisensi sementara gratis dan menggabungkan gambar tanpa batasan evaluasi.

Gabungkan Gambar Online

Anda juga dapat menggunakan alat penggabungan gambar gratis kami untuk menggabungkan gambar Anda secara online. Alat ini didasarkan pada Aspose.Imaging for Python dan Anda tidak perlu membuat akun untuk itu.

Kesimpulan

Artikel ini memberi Anda salah satu solusi terbaik dan paling sederhana untuk menggabungkan beberapa gambar menjadi satu gambar dengan Python. Penggabungan gambar horizontal dan vertikal ditunjukkan dengan bantuan contoh kode. Selain itu, kami telah memperkenalkan Anda ke alat online untuk menggabungkan gambar secara gratis.

Anda dapat mempelajari lebih lanjut tentang pustaka pemrosesan gambar Python dengan mengunjungi dokumentasi. Selain itu, Anda dapat membagikan pertanyaan Anda kepada kami melalui forum kami.

Lihat juga