[Dúvida] Merge PNG + JPG

8 respostas
mxwebman

Alguém sabe se existe algum jeito de pegar uma imagem em PNG e colar em cima de uma em JPG e salvar o resultado da união das 2 em uma terceira imagem JPG? Ah, e mantendo a transparência do PNG original, assim como qualquer programinha fuleiro de edição de imagens faz. Obrigado. :wink:

Exemplo: pegar uma imagem de uma bola e colar em um fundo de campo de futebol, mas sem que fique um quadrado em volta da bola.

8 Respostas

dionat4n

PNG tem transparencia? Se tiver eh uma novidade para mim…

Pelo que eu saiba soh GIF tem (dos tipos mais conhecidos de imagens).

mxwebman

dionat4n:
PNG tem transparencia? Se tiver eh uma novidade para mim…

Pelo que eu saiba soh GIF tem (dos tipos mais conhecidos de imagens).

Sim, tem transparência.

Marky.Vasconcelos

Sim PNG tem transparencia.

Achoq ue voce pode carregar as duas para duas BufferedImages com a ImageIO.read

Depois criar uma BufferedImage com o tamanho da maior imagem… pegar o Graphics dessa imagem e pintar a de baixo primeiro depois a segunda.
E usar a ImageIO.write para escrever a nova.

Só isso xD

mxwebman

Mark_Ameba:
Sim PNG tem transparencia.

Achoq ue voce pode carregar as duas para duas BufferedImages com a ImageIO.read

Depois criar uma BufferedImage com o tamanho da maior imagem… pegar o Graphics dessa imagem e pintar a de baixo primeiro depois a segunda.
E usar a ImageIO.write para escrever a nova.

Só isso xD

CARA, PERFEITO!! Valeu mesmo!! Era exatamente isso que eu queria!! :lol: Abraços!!

Marky.Vasconcelos

Conseguiu? Posta o código ai. Eu só pensei mas nunca implementei isso.

mxwebman
public void mergeImages(File imageFileBackground, File imageFileOver, File imageFileResult, int posX, int posY) throws IOException{

        BufferedImage newImageBackground=ImageIO.read(imageFileBackground);
        BufferedImage newImageOver=ImageIO.read(imageFileOver);

        BufferedImage newImageResult=new BufferedImage(newImageBackground.getWidth(), newImageBackground.getHeight(), BufferedImage.TYPE_INT_RGB);

        Graphics2D g2d = (Graphics2D) newImageResult.getGraphics();
        g2d.drawImage(newImageBackground, 0, 0, null);
        g2d.drawImage(newImageOver, posX, posY, null);
        g2d.dispose();

        ImageIO.write(newImageResult, "jpg", imageFileResult);

    }
Marky.Vasconcelos

É o que eu tinha imaginado mesmo. :smiley:

dionat4n

Caramba, nunca vi PNG com transparência, vou analisar isso na próxima oportunidade… Valeu!

Criado 1 de abril de 2009
Ultima resposta 2 de abr. de 2009
Respostas 8
Participantes 3