ادغام تصاویر در جاوا

طیف وسیعی از سناریوها وجود دارد که در آنها ویرایش و دستکاری تصویر به صورت برنامه نویسی انجام می شود. در ویرایش تصویر، ادغام تصاویر یک ویژگی مهم است که برای ترکیب دو یا چند تصویر، به عنوان مثال، برای ساختن یک کلاژ استفاده می شود. در این مقاله با نحوه ادغام چندین تصویر در یک تصویر در جاوا آشنا خواهید شد. ما به صراحت نحوه ادغام تصاویر را به صورت افقی و عمودی نشان خواهیم داد.

Java API برای ادغام تصاویر - دانلود رایگان

Aspose.Imaging for Java یک API پردازش تصویر قدرتمند است که به شما امکان می دهد با طیف گسترده ای از فرمت های تصویر کار کنید. این ویژگی های مختلفی را ارائه می دهد که برای ویرایش تصویر مورد نیاز است. ما از این API برای ادغام تصاویر خود در این پست وبلاگ استفاده خواهیم کرد. می‌توانید API را دانلود یا با استفاده از تنظیمات Maven زیر نصب کنید.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository> 

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-imaging</artifactId>
    <version>22.7</version>
</dependency>

ادغام چندین تصویر در جاوا

شما می توانید تصاویر را به یکی از دو روش ادغام کنید: عمودی و افقی. در ادغام عمودی، تصاویر یکی یکی در جهت عمودی ترکیب می شوند. در حالی که در ادغام افقی، تصاویر در جهت افقی به یکدیگر الحاق می شوند. بنابراین بیایید ببینیم که چگونه می توان تصاویر را به هر دو روش ادغام کرد.

ادغام تصاویر به صورت افقی در جاوا

مراحل زیر برای ادغام تصاویر به صورت افقی با استفاده از جاوا آمده است.

  • ابتدا مسیرهای تصاویر را در یک آرایه رشته ای مشخص کنید.
  • ارتفاع و عرض تصویر حاصل را محاسبه کنید.
  • یک شی از کلاس JpegOptions ایجاد کنید و گزینه های مورد نیاز را تنظیم کنید.
  • یک شی از کلاس JpegImage ایجاد کنید و آن را با شی JpegOptions و ارتفاع و عرض تصویر حاصل مقداردهی اولیه کنید.
  • فهرست تصاویر را حلقه بزنید و هر تصویر را با استفاده از کلاس RasterImage بارگذاری کنید.
  • برای هر تصویر یک مستطیل ایجاد کنید و آن را با استفاده از روش JpegImage.saveArgb32Pixels() به تصویر حاصل اضافه کنید.
  • عرض دوخت را در هر تکرار افزایش دهید.
  • پس از اتمام، تصویر حاصل را با استفاده از روش JpegImage.save(string) ذخیره کنید.

نمونه کد زیر نحوه ادغام تصاویر را به صورت افقی در جاوا نشان می دهد.

// لیست تصاویر
String[] imagePaths = { "image.jpg", "image.jpg" };

// مسیر تصویر خروجی
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";

// اندازه تصویر حاصل را دریافت کنید
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
	try (RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(imagePath)) {
		Size size = image.getSize();
		newWidth += size.getWidth();
		newHeight = Math.max(newHeight, size.getHeight());
	}
}

// تصاویر را در یک عکس جدید ترکیب کنید
try (JpegOptions options = new JpegOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);
	options.setQuality(100);

  	// ایجاد تصویر حاصل
	try (JpegImage newImage = (JpegImage) Image.create(options, newWidth, newHeight)) {
		int stitchedWidth = 0;
		for (String imagePath : imagePaths) {
			try (RasterImage image = (RasterImage) Image.load(imagePath)) {
				Rectangle bounds = new Rectangle(stitchedWidth, 0, image.getWidth(), image.getHeight());
				newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
				stitchedWidth += image.getWidth();
			}
		}
    
    		// ذخیره تصویر خروجی
		newImage.save(outputPath);
	}
}

تصویر زیر خروجی ادغام دو تصویر مشابه را به صورت افقی نشان می دهد.

ادغام تصاویر به صورت افقی در جاوا

ادغام تصاویر به صورت عمودی در جاوا

برای ادغام تصاویر به صورت عمودی، فقط باید نقش ویژگی های ارتفاع و عرض را تغییر دهید. بقیه کدها به همین صورت خواهد بود. نمونه کد زیر نحوه ادغام چندین تصویر را به صورت عمودی در جاوا نشان می دهد.

// لیست تصاویر
String[] imagePaths = { "image.jpg", "image.jpg" };

// مسیر تصویر خروجی
String outputPath = "output-vertical.jpg";

// اندازه تصویر حاصل را دریافت کنید
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
	try (RasterImage image = (RasterImage) Image.load(imagePath)) {
		Size size = image.getSize();
		newWidth = Math.max(newWidth, size.getWidth());
		newHeight += size.getHeight();
	}
}

// تصاویر را در یک عکس جدید ترکیب کنید
try (JpegOptions options = new JpegOptions()) {
	options.setSource(new StreamSource()); // empty
	options.setQuality(100);
  
  	// ایجاد تصویر حاصل
	try (JpegImage newImage = (JpegImage) Image.create(options, newWidth, newHeight)) {
		int stitchedHeight = 0;
		for (String imagePath : imagePaths) {
			try (RasterImage image = (RasterImage) Image.load(imagePath)) {
				Rectangle bounds = new Rectangle(0, stitchedHeight, image.getWidth(), image.getHeight());
				newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
				stitchedHeight += image.getHeight();
			}
		}
    		// ذخیره تصویر حاصل
		newImage.save(outputPath);
	}
}

تصویر زیر خروجی ادغام دو تصویر مشابه را به صورت عمودی نشان می دهد.

ادغام تصاویر به صورت عمودی در جاوا

ادغام تصاویر PNG در جاوا

در بخش های قبلی نحوه ادغام تصاویر در فرمت JPG را نشان دادیم. با این حال، ممکن است لازم باشد تصاویر را در قالب PNG نیز ادغام کنید. برای ادغام تصاویر PNG، فقط باید کلاس‌های JpegImage و JpegOptions را به ترتیب با کلاس‌های PngImage و PngOptions جایگزین کنید و بقیه کدها ثابت می‌مانند.

نمونه کد زیر نحوه ادغام چندین تصویر با فرمت PNG در جاوا را نشان می دهد.

// لیست تصاویر
String[] imagePaths = { "image.png", "image.png" };

// مسیر تصویر خروجی
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";

// اندازه تصویر حاصل را دریافت کنید
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
	try (RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(imagePath)) {
		Size size = image.getSize();
		newWidth += size.getWidth();
		newHeight = Math.max(newHeight, size.getHeight());
	}
}

// تصاویر را در یک عکس جدید ترکیب کنید
try (PngOptions options = new PngOptions()) {
	Source tempFileSource = new FileCreateSource(tempFilePath, true);
	options.setSource(tempFileSource);

  	// ایجاد تصویر حاصل
	try (PngImage newImage = (PngImage) Image.create(options, newWidth, newHeight)) {
		int stitchedWidth = 0;
		for (String imagePath : imagePaths) {
			try (RasterImage image = (RasterImage) Image.load(imagePath)) {
				Rectangle bounds = new Rectangle(stitchedWidth, 0, image.getWidth(), image.getHeight());
				newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
				stitchedWidth += image.getWidth();
			}
		}
    		// ذخیره تصویر
		newImage.save(outputPath);
	}
}

Java Image Merging API - یک مجوز رایگان دریافت کنید

شما می توانید یک مجوز موقت رایگان دریافت کنید و تصاویر را بدون محدودیت ارزیابی ادغام کنید.

نتیجه

در این مقاله، نحوه ادغام چندین تصویر را در یک تصویر با استفاده از جاوا یاد گرفتید. نمونه کد جاوا نحوه ترکیب تصاویر را به صورت عمودی و افقی نشان داده است. علاوه بر این، می‌توانید با استفاده از مستندات درباره API پردازش تصویر جاوا بیشتر کاوش کنید. همچنین، می توانید سوالات خود را از طریق [تالار گفتمان26 با ما در میان بگذارید.

همچنین ببینید

اطلاعات: Aspose برنامه وب رایگان کلاژ را ارائه می دهد. با استفاده از این سرویس آنلاین، می توانید تصاویر JPG به JPG یا PNG را به PNG ادغام کنید، [شبکه های عکس 3 و غیره ایجاد کنید.