Pessoal, eu tenho os seguinte problema…
primeiro, tenho uma imagem de 400x00 com fundo branco;
segundo, tenho uma imagem com resolução menor 200x200(ou outro valor qualquer que será sempre menor que o primeiro).
por final, eu gostaria de sobrepor a segunda imagem em relação à primeira, e salvar essa imagem final.
Gostaria de saber, se é possível fazer isso em java montar uma imagem em cima de outra.
[RESOLVIDO]Sobrepondo imagem e salvando
W
6 Respostas
V
Para salvar a imagem daquele código novamente no disco, é só usar o método ImageIO.write sobre a variável image.
W
Devo estar fazendo algo errado, pois está gravando no disco, somente a imagem de fundo
File fundo = new File("fundo.png");
File imagem = new File("imagem.png");
File imgfinal = new File("final.png");
BufferedImage _fundo = ImageIO.read(fundo);
BufferedImage _imagem = ImageIO.read(imagem);
int w = _fundo.getWidth();
int h = _fundo.getHeight();
Graphics2D graphics = _fundo.createGraphics();
graphics.drawImage(_fundo, 0, 0, w, h, null);
graphics.dispose();
ImageIO.write(_fundo, "PNG", imgfinal);
W
int w = _fundo.getWidth();
int h = _fundo.getHeight();
Graphics2D graphics = _fundo.createGraphics();
graphics.drawImage(_imagem, 0, 0, w, h, null);//Corrigi aqui
graphics.dispose();
ImageIO.write(_fundo, "PNG", imgfinal);
Mais mesmo assim, continua salvando somente a imagem de fundo..
W
Do segundo modo, ele redimensiona a imagem, eu gostaria apenas de sobrepor ela no fundo… sem redimensionar… pois quando redimensiono a imagem menor, ela perde qualidade…
W
Valeu Viny,segui suas dicas e resolvi da seguinte maneira:
File fundo = new File("fundo.png");
File imagem = new File("imagem.jpg");
File imgfinal = new File("final.png");
BufferedImage _fundo = ImageIO.read(fundo);
BufferedImage _imagem = ImageIO.read(imagem);
int w = _imagem.getWidth();//pego o tamanho da imagem ao invés do fundo.
int h = _imagem.getHeight();
Graphics2D graphics = _fundo.createGraphics();
graphics.drawImage(_imagem, 0, 0, w, h, null); //Aqui, ao sobrepor, ela não será redimensionada.
graphics.dispose();
ImageIO.write(_fundo, "PNG", imgfinal);//Salvo a imagem no disco
V
Existe uma versão do drawImage para imagem inteira:
BufferedImage _fundo = ImageIO.read(new File("fundo.png"));
BufferedImage _imagem = ImageIO.read(new File("imagem.jpg"));
Graphics2D graphics = _fundo.createGraphics();
graphics.drawImage(_imagem, 0, 0, null); //Aqui, ao sobrepor, ela não será redimensionada.
graphics.dispose();
ImageIO.write(_fundo, "PNG", new File("final.png"));//Salvo a imagem no disco
Criado 7 de janeiro de 2012
Ultima resposta 7 de jan. de 2012
Respostas 6
Participantes 2
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo