[RESOLVIDO]Sobrepondo imagem e salvando

6 respostas
W

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.

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