มีสถานการณ์ต่างๆ มากมายที่การแก้ไขและจัดการรูปภาพดำเนินการโดยทางโปรแกรม ในการแก้ไขภาพ การรวมภาพเป็นคุณลักษณะสำคัญที่ใช้ในการรวมภาพตั้งแต่สองภาพขึ้นไป เช่น เพื่อสร้างภาพตัดปะ ในบทความนี้ คุณจะได้เรียนรู้วิธีการผสานหลายภาพเป็นภาพเดียวใน 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
// รายการรูปภาพ
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 ใน 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 โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถแบ่งปันคำถามของคุณกับเราผ่านทาง ฟอรัม
ดูสิ่งนี้ด้วย
- แปลงรูปภาพเป็นโทนสีเทาใน C#
- เพิ่มลายน้ำให้กับรูปภาพโดยใช้ C #
- บีบอัดรูปภาพ PNG, JPEG และ TIFF โดยใช้ C#
ข้อมูล: Aspose ให้บริการ เว็บแอปภาพตัดปะฟรี เมื่อใช้บริการออนไลน์นี้ คุณสามารถรวมภาพ JPG เป็น JPG หรือ PNG เป็น PNG สร้าง ตารางภาพ และอื่นๆ