Tudo bom, pessoal?
Estou com uma dúvida cruel aqui: tenho um servlet que gera dois arquivos, e , desses dois arquivos, eu gero duas imagens, uma para cada, para gravação em banco. só que me informaram que eu devo gerar apenas uma imagem contendo as duas imagens, e me embananei todo na hora de fazer isso. Alguém teria alguma dica pra me dar?
Alguns formatos de imagens (como BMP ou PNG) não suportam pôr duas imagens no mesmo arquivo. Qual é o formato que você deve usar?
Uso jpg, mas não há nenhuma restrição quanto ao tipo.
“Duas imagens no mesmo arquivo” quer dizer o quê? Pode ser que eles queiram visualizar as duas imagens, uma ao lado da outra. Pode ser que você tenha de usar o formato TIFF ou GIF, que suportam 2 imagens em um único arquivo. O que eles querem na verdade? (Se for para visualizar a imagem no browser, você tem de usar GIF, PNG ou JPEG; outros formatos têm problemas de visualização - mesmo BMP pode ter problemas).
Na verdade, tenho que juntar os dois arquivos de imagem que foram gerados anteriormente em apenas um, para gravação no banco e posterior visualização.
Explicando : tenho dois documentos PDF gerados no Jasper, que depois junto em apenas um, com duas páginas. Essas duas páginas viram dois arquivos de imagem, que iria gravar no banco. Mas não posso gravar as duas imagens. Preciso de apenas uma que contenha estas duas imagens geradas.
Ninguém teria alguma idéia?
Consegui resolver. Pra quem precisar, segue abaixo o código:
BufferedImage imageHeader =
ImageIO.read(new File(arquivo1);
System.out.println("" + imageHeader.getHeight() + " " +
imageHeader.getWidth());
BufferedImage imageContent =
ImageIO.read(new File(parquivo2);
BufferedImage imageBotton =
ImageIO.read(new File(arquivo3));
//create new BufferedImage instance of same width and height as that of merging images
BufferedImage resultantImage =
new BufferedImage(imageBotton.getWidth(),
imageHeader.getHeight() * 3,
BufferedImage.TYPE_INT_RGB);
//get graphichs of resultant image
Graphics resultantGraphics = resultantImage.getGraphics();
//draw image on graphics with width is same as that of test images but height 1/2 of test image
resultantGraphics.drawImage(imageHeader, 0, 0, null);
resultantGraphics.drawImage(imageContent, 0, imageHeader.getHeight(), null);
resultantGraphics.drawImage(imageBotton,0, imageHeader.getHeight() + imageContent.getHeight(), null);
ImageIO.write(resultantImage, "JPG",
new File(arquivoGerado);
System.out.println("success");