Istnieje szereg scenariuszy, w których edytowanie i manipulowanie obrazami odbywa się programowo. Podczas edycji obrazów łączenie obrazów jest ważną funkcją używaną do łączenia dwóch lub więcej obrazów, na przykład w celu utworzenia kolażu. W tym artykule dowiesz się, jak scalić wiele obrazów w jeden obraz w Javie. Wyraźnie zademonstrujemy, jak łączyć obrazy w poziomie iw pionie.
Java API do scalania obrazów — bezpłatne pobieranie
Aspose.Imaging for Java to potężny interfejs API do przetwarzania obrazów, który umożliwia pracę z szeroką gamą formatów obrazów. Zapewnia szereg funkcji wymaganych do edycji obrazu. Użyjemy tego interfejsu API do połączenia naszych obrazów w tym poście na blogu. Możesz pobrać interfejs API lub zainstalować go przy użyciu następujących konfiguracji Mavena.
<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>
Połącz wiele obrazów w Javie
Obrazy można łączyć na dwa sposoby: w pionie iw poziomie. W przypadku scalania pionowego obrazy są łączone jeden po drugim w kierunku pionowym. Natomiast w przypadku łączenia poziomego obrazy są dołączane do siebie w kierunku poziomym. Zobaczmy więc, jak scalić obrazy na dwa sposoby.
Scal obrazy poziomo w Javie
Poniżej przedstawiono kroki łączenia obrazów w poziomie przy użyciu języka Java.
- Najpierw określ ścieżki obrazów w tablicy ciągów.
- Oblicz wysokość i szerokość otrzymanego obrazu.
- Utwórz obiekt klasy JpegOptions i ustaw wymagane opcje.
- Utwórz obiekt klasy JpegImage i zainicjuj go obiektem JpegOptions oraz wysokością i szerokością wynikowego obrazu.
- Przejrzyj listę obrazów i załaduj każdy obraz za pomocą klasy RasterImage.
- Utwórz Rectangle dla każdego obrazu i dodaj go do wynikowego obrazu za pomocą metody JpegImage.saveArgb32Pixels().
- Zwiększ szerokość ściegu w każdej iteracji.
- Po zakończeniu zapisz wynikowy obraz za pomocą metody JpegImage.save(string).
Poniższy przykładowy kod pokazuje, jak scalać obrazy w poziomie w Javie.
// Lista obrazów
String[] imagePaths = { "image.jpg", "image.jpg" };
// Wyjściowa ścieżka obrazu
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";
// Uzyskaj wynikowy rozmiar obrazu
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());
}
}
// Połącz obrazy w nowy
try (JpegOptions options = new JpegOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
options.setQuality(100);
// Utwórz wynikowy obraz
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();
}
}
// Zapisz obraz wyjściowy
newImage.save(outputPath);
}
}
Poniższy obraz przedstawia wynik łączenia dwóch podobnych obrazów w poziomie.
Scal obrazy w pionie w Javie
Aby scalić obrazy w pionie, wystarczy zamienić role właściwości wysokości i szerokości. Reszta kodu będzie taka sama. Poniższy przykładowy kod demonstruje sposób scalania wielu obrazów w pionie w Javie.
// Lista obrazów
String[] imagePaths = { "image.jpg", "image.jpg" };
// Ścieżka obrazu wyjściowego
String outputPath = "output-vertical.jpg";
// Uzyskaj wynikowy rozmiar obrazu
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();
}
}
// Połącz obrazy w nowy
try (JpegOptions options = new JpegOptions()) {
options.setSource(new StreamSource()); // empty
options.setQuality(100);
// Utwórz wynikowy obraz
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();
}
}
// Zapisz wynikowy obraz
newImage.save(outputPath);
}
}
Poniższy obraz przedstawia wynik scalania dwóch podobnych obrazów w pionie.
Scal obrazy PNG w Javie
W poprzednich sekcjach pokazaliśmy, jak scalać obrazy w formacie JPG. Jednak może być konieczne scalenie obrazów również w formacie PNG. Aby scalić obrazy PNG, wystarczy zastąpić klasy JpegImage i JpegOptions odpowiednio klasami PngImage i PngOptions, a reszta kodu pozostanie taka sama.
Poniższy przykładowy kod pokazuje, jak scalić wiele obrazów w formacie PNG w Javie.
// Lista obrazów
String[] imagePaths = { "image.png", "image.png" };
// Wyjściowa ścieżka obrazu
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";
// Uzyskaj wynikowy rozmiar obrazu
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());
}
}
// Połącz obrazy w nowy
try (PngOptions options = new PngOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
// Utwórz wynikowy obraz
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();
}
}
// Zapisać obraz
newImage.save(outputPath);
}
}
Java Image Merging API — uzyskaj bezpłatną licencję
Możesz uzyskać bezpłatną tymczasową licencję i scalać obrazy bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule nauczyłeś się łączyć wiele obrazów w jeden obraz przy użyciu języka Java. Próbki kodu Java pokazały, jak łączyć obrazy w pionie iw poziomie. Ponadto możesz dowiedzieć się więcej o interfejsie API przetwarzania obrazu Java, korzystając z dokumentacji. Możesz także podzielić się z nami swoimi pytaniami za pośrednictwem naszego forum.
Zobacz też
- Konwertuj obrazy na skalę szarości w C#
- Dodaj znak wodny do obrazów za pomocą C#
- Kompresuj obrazy PNG, JPEG i TIFF za pomocą języka C#
Informacje: Aspose zapewnia BEZPŁATNĄ aplikację internetową Collage. Korzystając z tej usługi online, możesz scalać obrazy JPG do JPG lub PNG do PNG, tworzyć siatki zdjęć i tak dalej.