| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 10:13:50
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
ola gostaria de carregar uma imagem de um arquivo para um panel... porem não posso usar a rotina pronta do java para fazer isto ImageIO.read retornado um BufferedImage e passando para o g.drawImage... ou seja tenho que fazer isto na unha... sem usar nada dessas apis... no maximo do maximo a classe File... como posso fazer isto alguem tem alguma ideia?
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 10:22:00
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
1. Procure a documentação do formato de imagem que você quer usar.
2. Abra o arquivo, usando um InputStream qualquer e analise os dados.
3. Você será obrigado a usar o método Graphics pelo menos para pintar os pontos da imagem na tela.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 10:26:38
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
mas pegando o InputStream como faço para pegar suas informações para pinta-la com o Graphics?
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 10:40:42
|
knik
JavaTeenager
![[Avatar]](/images/avatar/ebeb300882677f350ea818c8f333f5b9.jpg)
Membro desde: 03/04/2006 19:16:59
Mensagens: 192
Offline
|
Como disse o ViniGodoy.
Só tem um jeito de se fazer isto, assim:
Primeiro crie uma classe que estenda JPanel:
Em seguida, crie o JFrame que vai exibir este painel:
Assim nem precisa de File ou InputStream. Você simplesmete coloca este método na sua classe que estenda JPanel.
Não tem erro, vai funcionar logo na primeira tentativa!
This message was edited 1 time. Last update was at 27/11/2009 11:24:36
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 11:39:02
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Acho que ele quer pintar na unha, sem o ImageIcon.
No caso de um BMP, você teria que decodificar o cabeçalho e depois ler os valores RGB presentes em cada pixel. Com isso vc gera um color e pinta um ponto na posição do pixel:
http://en.wikipedia.org/wiki/BMP_file_format
O BMP é um formato bastante direto. 3 bytes de cor são gravados lado-a-lado. E os pixels são gravados em sequencia. Não há compactação.
Se você lidar com jpeg, gif, ou png, terá que lidar com a compactação. Nesse caso, além do cabeçalho, terá que buscar pelo algoritmo que faz isso. É um processo um pouco mais complexo.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 11:55:18
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
O modelo jpeg suporta várias informações no arquivo como o exif. A melhor maneira de lidar com imagens digitais é saber como funcionam os formatos, e estudar a sua parte matemática.
Aqui o datasheet do formato jpeg.
http://en.wikipedia.org/wiki/JPEG
O BMP é o mais simples, pois não há nenhuma estrutura complexa por detráz dele. Apenas sequências de bytes.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/11/2009 10:16:57
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
ViniGodoy wrote:Acho que ele quer pintar na unha, sem o ImageIcon.
No caso de um BMP, você teria que decodificar o cabeçalho e depois ler os valores RGB presentes em cada pixel. Com isso vc gera um color e pinta um ponto na posição do pixel:
http://en.wikipedia.org/wiki/BMP_file_format
O BMP é um formato bastante direto. 3 bytes de cor são gravados lado-a-lado. E os pixels são gravados em sequencia. Não há compactação.
Se você lidar com jpeg, gif, ou png, terá que lidar com a compactação. Nesse caso, além do cabeçalho, terá que buscar pelo algoritmo que faz isso. É um processo um pouco mais complexo.
Exatamente... como o Vinni disse eu quero pintar na unha...
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/11/2009 10:26:13
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
luistiagos wrote:eu quero pintar na unha...
Deixando de brincadeiras:
Vai ser bem lento; acho que é melhor você ler sobre os algoritmos e entendê-los, em vez de fazer as coisas "no braço".
Até porque boa parte dos algoritmos nem em Java é implementado, mas sim em C com algumas partes em assembly.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/11/2009 11:50:59
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
sim eu percebi... usam jni na api da sun... até ai sem problemas faço a coisa em C depois só chamo ele no java...
mas o que eu preciso e saber como fazer...
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
|
|