| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 11:59:33
|
Polozi
What is classpath?
![[Avatar]](/images/avatar/51c66183db882de9d51dac0dabec5323.png)
Membro desde: 21/03/2007 11:11:06
Mensagens: 6
Offline
|
Galera, será que alguem poderia me ajudar?
Estou tendo problemas com trasparencia de imagens. É o seguinte:
Tenho uma imagem1 e preciso sobrepor outra imagem2 menor sobre esta imagem1. A imagem2 é png com trasparencia. Quero criar uma imagem com marca d'agua, que seria a imagem2 transparente em cima na imagem1.
Qndo eu abro a imagem2 que tem a trasparencia e jogo ela num JFrame só pra visualizar, ela abre com transparencia. Mas qndo eu uso o metodo getRGB de um objeto BufferImage pra pegar os pixels da imagem2 e uso o metodo setRGB pra sobrepor na imagem1, a imagem2 perde a transparencia e fica com o fundo branco. Eis o codigo:
public class Teste {
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("c:/images.jpg"));
BufferedImage image2 = ImageIO.read(new File("c:/images2.png"));
int w = image2.getWidth();
int h = image2.getHeight();
int[] pixels = image2.getRGB(0, 0, w, h, null, 0, w);
image2.setRGB(0, 0, w, h, pixels ,0 ,w);
// aqui vai o codigo pra mostrar no JFrame
}
}
Por favor, será que alguem poderia me dizer o que estou fazendo de errado? Percebi que este codigo esta perdendo o alpha da imagem2. Como eu faria pra fazer isso sem perder o alpha da imagem?
Obrigado.
|
O temor do SENHOR é o princípio da sabedoria - Salmo 111.10 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 13:47:08
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Tente: O problema é que o setPixel vai usar o padrão da imagem que está recebendo o pixel, de maneira direta, sem interpretar o contexto gráfico da imagem de origem. Isso não acontece se você usar o objeto graphics.
This message was edited 1 time. Last update was at 19/07/2010 14:37:40
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 14:21:35
|
Polozi
What is classpath?
![[Avatar]](/images/avatar/51c66183db882de9d51dac0dabec5323.png)
Membro desde: 21/03/2007 11:11:06
Mensagens: 6
Offline
|
Nassa Vinicius......vlw mesmo......vc é um gênio cara!!!
Obrigadão pela força!!!
|
O temor do SENHOR é o princípio da sabedoria - Salmo 111.10 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2007 15:23:46
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
hahahaha... quem me dera ser um gênio.
A dica básica é: Sempre que possível, use o objeto Graphics para editar a imagem. Além de ser muuuito mais fácil, ele leva em consideração o tipo da imagem sendo editada.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 18:07:29
|
Polozi
What is classpath?
![[Avatar]](/images/avatar/51c66183db882de9d51dac0dabec5323.png)
Membro desde: 21/03/2007 11:11:06
Mensagens: 6
Offline
|
Vinicius,
sem quere abusar da sua boa vontade, será q vc poderia me dar mais uma forcinha???
Preciso fazer a mesma coisa com 2 imagens GIFs, só que a imagem que fica por baixo, é um GIF animado. Fiz com GIFs normais e deu certo, mas com uma GIF animado não. A GIF perde a animação.
Será que teria coma fazer a mesma coisa sem perder a animação??
Mais uma vez, muito obrigado!!!
|
O temor do SENHOR é o princípio da sabedoria - Salmo 111.10 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 18:20:23
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Ok, com GIF a coisa complica um pouco.
O GIF animado não é uma imagem só, e sim um conjunto de imagens, que são exibidas em seqüência. Primeiramente, você deve ler cada uma dessas imagens, usando um ImageInputStream e um ImageReader.
Depois, você aplica a marca d'agua em cada imagem, e salva tudo novamente com um ImageWriter.
Dá uma olhada nos tópicos:
http://java.sun.com/j2se/1.5.0/docs/guide/imageio/spec/apps.fm3.html
http://java.sun.com/j2se/1.5.0/docs/guide/imageio/spec/apps.fm4.html
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 18:37:52
|
Polozi
What is classpath?
![[Avatar]](/images/avatar/51c66183db882de9d51dac0dabec5323.png)
Membro desde: 21/03/2007 11:11:06
Mensagens: 6
Offline
|
Pow.....legal.....vou dar uma estudada nessas classes.
Eu preciso ver se tem como eu abrir um GIF animado ja com todas as imagens e depois trata-las, pq o parceiro que fornece as imagens, ja fornece desta maneira, não tem como eu abrir uma de cada vez.
Mas vlw cara.....vou dar uma ralada aqui e qualquer coisa dou um berro.....rsrs
Obrigadão!!!
|
O temor do SENHOR é o princípio da sabedoria - Salmo 111.10 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 19:01:06
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Você não entendeu.
O formato GIF animado é composto por várias imagens. Independente de ser um arquivo só, o imageReader irá separa-las e o ImageWriter vai uni-las novamente.
Você vai ver que o ImageReader tem o método read(int) que recebe um índice de qual imagem dentro do arquivo .gif você quer abrir. É o que descreve o item 3.3.3 Reading From Multi-Image Files desse artigo que eu te passei.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 19:14:12
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Esse arquivo foi retirado dos exemplos do livro Core Java 2 - Advanced Features, sétima edição.
Ele mostra como abrir um gif animado. Note que o exemplo irá separar o gif (mesmo o de seu fornecedor) em várias imagens.
Bom proveito!
| Nome do arquivo |
ImageIOTest.zip |
Download
|
| Descrição |
Mostra como separar um GIF animado em suas imagens componentes. Usa para isso ImageReader e ImageInputStream. Retirado do Core Java, vol2. capítulo 7. Código publicado no site do autor. |
| Tamanho |
5 Kbytes
|
| Baixado: |
157 vez(es) |
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2010 22:06:28
|
gustavorozolin
JavaBaby
![[Avatar]](/images/avatar/fdfa9a38cf3d8d850a6fd47b438bfe43.jpeg)
Membro desde: 11/03/2008 15:26:34
Mensagens: 96
Offline
|
ViniGodoy wrote:Tente:
O problema é que o setPixel vai usar o padrão da imagem que está recebendo o pixel, de maneira direta, sem interpretar o contexto gráfico da imagem de origem. Isso não acontece se você usar o objeto graphics.
Encima era isso mesmo que eu estava procurando perfeito
|
|
|
 |
|
|