รวมรูปภาพใน Java

มีสถานการณ์ต่างๆ มากมายที่การแก้ไขและจัดการรูปภาพดำเนินการโดยทางโปรแกรม ในการแก้ไขภาพ การรวมภาพเป็นคุณลักษณะสำคัญที่ใช้ในการรวมภาพตั้งแต่สองภาพขึ้นไป เช่น เพื่อสร้างภาพตัดปะ ในบทความนี้ คุณจะได้เรียนรู้วิธีการผสานหลายภาพเป็นภาพเดียวใน Java เราจะสาธิตวิธีผสานภาพในแนวนอนและแนวตั้งอย่างชัดเจน

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>

รวมหลายภาพใน Java

คุณสามารถผสานรูปภาพได้สองวิธี: แนวตั้งและแนวนอน ในการรวมภาพในแนวตั้ง ภาพจะถูกรวมเข้าด้วยกันในแนวตั้ง ในขณะที่การรวมภาพในแนวนอน ภาพจะถูกผนวกเข้าด้วยกันในแนวนอน มาดูวิธีการรวมภาพทั้งสองวิธีกัน

รวมรูปภาพในแนวนอนใน Java

ต่อไปนี้เป็นขั้นตอนในการรวมรูปภาพในแนวนอนโดยใช้ Java

  • ขั้นแรก ระบุเส้นทางของรูปภาพในอาร์เรย์สตริง
  • คำนวณความสูงและความกว้างของภาพผลลัพธ์
  • สร้างวัตถุของคลาส JpegOptions และตั้งค่าตัวเลือกที่จำเป็น
  • สร้างวัตถุของคลาส JpegImage และเริ่มต้นด้วยวัตถุ JpegOptions และความสูงและความกว้างของภาพผลลัพธ์
  • วนซ้ำรายการภาพและโหลดแต่ละภาพโดยใช้คลาส RasterImage
  • สร้าง สี่เหลี่ยมผืนผ้า สำหรับแต่ละภาพและเพิ่มลงในภาพผลลัพธ์โดยใช้เมธอด JpegImage.saveArgb32Pixels()
  • เพิ่มความกว้างของตะเข็บในการวนซ้ำแต่ละครั้ง
  • เมื่อเสร็จแล้ว ให้บันทึกภาพผลลัพธ์โดยใช้เมธอด JpegImage.save(string)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการผสานรูปภาพในแนวนอนใน Java

// รายการรูปภาพ
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);
	}
}

ภาพต่อไปนี้แสดงผลลัพธ์ของการรวมภาพที่คล้ายคลึงกันสองภาพในแนวนอน

รวมรูปภาพในแนวนอนใน Java

รวมรูปภาพในแนวตั้งใน Java

ในการรวมรูปภาพในแนวตั้ง คุณต้องสลับบทบาทของคุณสมบัติความสูงและความกว้างเท่านั้น รหัสที่เหลือจะเหมือนกัน ตัวอย่างโค้ดต่อไปนี้สาธิตวิธีการรวมรูปภาพหลายรูปในแนวตั้งใน Java

// รายการรูปภาพ
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);
	}
}

ภาพต่อไปนี้แสดงผลลัพธ์ของการรวมภาพที่คล้ายกันสองภาพในแนวตั้ง

รวมรูปภาพในแนวตั้งใน Java

รวมภาพ PNG ใน Java

ในส่วนก่อนหน้านี้ เราได้สาธิตวิธีรวมรูปภาพในรูปแบบ JPG อย่างไรก็ตาม คุณอาจต้องผสานรูปภาพในรูปแบบ PNG ด้วย ในการผสานภาพ PNG คุณจะต้องแทนที่คลาส JpegImage และ JpegOptions ด้วยคลาส PngImage และ PngOptions ตามลำดับ และรหัสที่เหลือจะยังคงเหมือนเดิม

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการผสานหลายภาพในรูปแบบ PNG ใน Java

// รายการรูปภาพ
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 - รับใบอนุญาตฟรี

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี และรวมรูปภาพโดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีรวมรูปภาพหลายรูปเป็นภาพเดียวโดยใช้ Java ตัวอย่างโค้ด Java ได้สาธิตวิธีการรวมรูปภาพในแนวตั้งและแนวนอน นอกจากนี้ คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ API การประมวลผลภาพ Java โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถแบ่งปันคำถามของคุณกับเราผ่านทาง ฟอรัม

ดูสิ่งนี้ด้วย

ข้อมูล: Aspose ให้บริการ เว็บแอปภาพตัดปะฟรี เมื่อใช้บริการออนไลน์นี้ คุณสามารถรวมภาพ JPG เป็น JPG หรือ PNG เป็น PNG สร้าง ตารางภาพ และอื่นๆ