Há uma variedade de cenários nos quais a edição e a manipulação de imagens são executadas programaticamente. Na edição de imagens, a mesclagem de imagens é um recurso importante que é usado para combinar duas ou mais imagens, por exemplo, para fazer colagem. Neste artigo, você aprenderá como mesclar várias imagens em uma única imagem em Java. Demonstraremos explicitamente como mesclar imagens horizontalmente e verticalmente.
API Java para mesclar imagens - download gratuito
Aspose.Imaging for Java é uma poderosa API de processamento de imagem que permite trabalhar com uma ampla variedade de formatos de imagem. Ele fornece uma variedade de recursos necessários para edição de imagens. Usaremos essa API para mesclar nossas imagens nesta postagem do blog. Você pode baixar a API ou instalá-la usando as seguintes configurações do 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>
Mesclar várias imagens em Java
Você pode mesclar as imagens de duas maneiras: verticalmente e horizontalmente. Na mesclagem vertical, as imagens são combinadas uma a uma na direção vertical. Considerando que, na mesclagem horizontal, as imagens são anexadas umas às outras na direção horizontal. Então, vamos ver como mesclar imagens de ambas as maneiras.
Mesclar imagens horizontalmente em Java
A seguir estão as etapas para mesclar imagens horizontalmente usando Java.
- Primeiro, especifique os caminhos das imagens em uma matriz de strings.
- Calcule a altura e a largura da imagem resultante.
- Crie um objeto da classe JpegOptions e defina as opções necessárias.
- Crie um objeto da classe JpegImage e inicialize-o com o objeto JpegOptions e altura e largura da imagem resultante.
- Percorra a lista de imagens e carregue cada imagem usando a classe RasterImage.
- Crie um Rectangle para cada imagem e adicione-o à imagem resultante usando o método JpegImage.saveArgb32Pixels().
- Aumente a largura costurada em cada iteração.
- Uma vez feito, salve a imagem resultante usando o método JpegImage.save(string).
O exemplo de código a seguir mostra como mesclar imagens horizontalmente em Java.
// Lista de imagens
String[] imagePaths = { "image.jpg", "image.jpg" };
// Caminho da imagem de saída
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";
// Obtenha o tamanho da imagem resultante
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());
}
}
// Combine imagens em uma nova
try (JpegOptions options = new JpegOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
options.setQuality(100);
// Criar imagem resultante
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();
}
}
// Salvar imagem de saída
newImage.save(outputPath);
}
}
A imagem a seguir mostra a saída da mesclagem de duas imagens semelhantes horizontalmente.
Mesclar imagens verticalmente em Java
Para mesclar as imagens verticalmente, você só precisa alternar as funções das propriedades de altura e largura. O resto do código será o mesmo. O exemplo de código a seguir demonstra como mesclar várias imagens verticalmente em Java.
// Lista de imagens
String[] imagePaths = { "image.jpg", "image.jpg" };
// Caminho da imagem de saída
String outputPath = "output-vertical.jpg";
// Obtenha o tamanho da imagem resultante
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();
}
}
// Combine imagens em uma nova
try (JpegOptions options = new JpegOptions()) {
options.setSource(new StreamSource()); // empty
options.setQuality(100);
// Criar imagem resultante
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();
}
}
// Salvar imagem resultante
newImage.save(outputPath);
}
}
A imagem a seguir mostra a saída da mesclagem de duas imagens semelhantes verticalmente.
Mesclar imagens PNG em Java
Nas seções anteriores, demonstramos como mesclar imagens no formato JPG. No entanto, você também pode precisar mesclar imagens no formato PNG. Para mesclar imagens PNG, você só precisa substituir as classes JpegImage e JpegOptions pelas classes PngImage e PngOptions respectivamente e o restante do código permanecerá o mesmo.
O exemplo de código a seguir mostra como mesclar várias imagens no formato PNG em Java.
// Lista de imagens
String[] imagePaths = { "image.png", "image.png" };
// Caminho da imagem de saída
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";
// Obtenha o tamanho da imagem resultante
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());
}
}
// Combine imagens em uma nova
try (PngOptions options = new PngOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
// Criar imagem resultante
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();
}
}
// Salvar imagem
newImage.save(outputPath);
}
}
Java Image Merging API - Obtenha uma licença gratuita
Você pode obter uma licença temporária gratuita e mesclar as imagens sem limitações de avaliação.
Conclusão
Neste artigo, você aprendeu como mesclar várias imagens em uma única imagem usando Java. Os exemplos de código Java demonstraram como combinar as imagens vertical e horizontalmente. Além disso, você pode explorar mais sobre a API de processamento de imagem Java usando documentação. Além disso, você pode compartilhar suas dúvidas conosco através do nosso fórum.
Veja também
- Converter imagens em escala de cinza em C #
- Adicionar marca d’água a imagens usando C#
- Compacte imagens PNG, JPEG e TIFF usando C#
Informações: Aspose fornece um aplicativo web de colagem GRATUITO. Usando este serviço online, você pode mesclar JPG para JPG ou PNG para imagens PNG, criar grades de fotos e assim por diante.