| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:19:37
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
Bom dia galera,
Eu to com o seguinte problema.
Tenho uma classe aonde gero uma imagem de um mapa através do meu BD.
Só que essa imagem ta vindo com uma qualidade não muito boa e gostaria de melhorar isso.
Alguém sabe me dizer como fazer isso?
Utilizo para gerar essa imagem GTRenderer, Rectangle, ReferencedEnvelope, BufferedImage, Graphics2D, ImageIO e File.
Agradeço desde já.
Abraço.
Att.
This message was edited 1 time. Last update was at 01/06/2010 13:40:11
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:25:57
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
A imagem no banco está em qual formato?
Qual formato você está usando para escrever a imagem?
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:32:03
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
No banco está armazenado um shape(.shp).
Eu carrego ele no meu código e salvo como arquivo de imagem, podendo ser jpeg, png, tiff, etc.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:34:20
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
Então, JPG e GIF vão ter perda de qualidade por padrão. O JPG vc pode configurar a porcentagem da compactação.
Você tentou usar PNG? A imagem está ficando ruim mesmo assim?
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:51:10
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
Como faço para configurar a compactação do JPG?
GIF e PNG ficam a mesma coisa.
Olha a foto em formato GIF.
Queria melhorar a qualidade dela, porque depois vou trabalhar com questão de zoom na imagem e ai vou ter que utilizar a mesma questão para melhorar a imagem.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:56:43
|
luiz.portnoy
JavaChild
![[Avatar]](/images/avatar/e19de38bc4d7571373729c47843d6827.jpg)
Membro desde: 11/05/2010 13:56:09
Mensagens: 137
Localização: Vitória - ES
Offline
|
groff, eu trabalhei com GIS e usei um pouco de geotools e tal. Recomendo que você tente pensar em tiles, como o Google Maps faz. Dá uma olhada no OpenLayers, no MapServer e no Ka-Map. Porque para cada escala vai gerar uma renderização nova e suas imagens serão novamente exibidas. Elas podem ser pre-cacheadas no servidor.
|
Triste: Mike Portnoy saiu do Dream Theater... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:58:41
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Na hora de desenhar faça:
Isso irá ativar anti-aliasing na sua imagem, o que vai suavizar bastante esse serrilhado. Na hora de ampliar, amplie a imagem e desenhe ampliada. Como sua informação é vetorial, não haverá perda de qualidade. O que vc não pode é ampliar o jpg ou gif gerado, pois aí ficará feio mesmo.
|
@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) 01/06/2010 10:08:38
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
Ahhh a qualidade no seu caso é o serrilhado. Pensei que era outro tipo de imagem.
A dica do Viny vai resolver seu problema, pq suavizando o serrilhado no nível de zoom atual vai parecer que a imagem gerada é vetorial. Mas como o Viny falou, se ampliar a imagem (sem ser renderizando novamente) vai perder qualidade mesmo.
[]´s
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 10:15:39
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
luiz.portnoy 01/06/2010 09:56:43 Assunto: Re:Como melhorar qualidade de imagem gerada ?
--------------------------------------------------------------------------------
groff, eu trabalhei com GIS e usei um pouco de geotools e tal. Recomendo que você tente pensar em tiles, como o Google Maps faz. Dá uma olhada no OpenLayers, no MapServer e no Ka-Map. Porque para cada escala vai gerar uma renderização nova e suas imagens serão novamente exibidas. Elas podem ser pre-cacheadas no servidor.
Então Luiz, aqui aonde eu estou desenvolvendo essa aplicação não estão querendo usar OpenLayers.
Por isso to nessa questão de imagem.
Tiles eu ainda não tinha ouvido falar, mas vou dar uma pesquisada e mesmo se for OpenLayers, vou verificar se vale a pena.
Se o GoogleMaps faz assim, pode ser que eu consiga resultados melhores.
ViniGodoy 01/06/2010 09:58:41 Assunto: Re:Como melhorar qualidade de imagem gerada ?
--------------------------------------------------------------------------------
Na hora de desenhar faça:
view plaincopy to clipboardprint?
RenderingHints rh = g2.getRenderingHints ();
rh.put (RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHints (rh);
RenderingHints rh = g2.getRenderingHints ();
rh.put (RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHints (rh);
Isso irá ativar anti-aliasing na sua imagem, o que vai suavizar bastante esse serrilhado. Na hora de ampliar, amplie a imagem e desenhe ampliada. Como sua informação é vetorial, não haverá perda de qualidade. O que vc não pode é ampliar o jpg ou gif gerado, pois aí ficará feio mesmo.
Então ViniGodoy, não estou ampliando a imagem dessa maneira não. Realmente fica muito ruim ampliar o jpg ou gif.
Uma dúvida sobre esse código que você me passou, esse g2 seria que tipo de objeto?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 10:17:08
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
davidbuzatto 01/06/2010 10:08:38 Assunto: Re:Como melhorar qualidade de imagem gerada ?
--------------------------------------------------------------------------------
Ahhh a qualidade no seu caso é o serrilhado. Pensei que era outro tipo de imagem.
A dica do Viny vai resolver seu problema, pq suavizando o serrilhado no nível de zoom atual vai parecer que a imagem gerada é vetorial. Mas como o Viny falou, se ampliar a imagem (sem ser renderizando novamente) vai perder qualidade mesmo.
[]´s
Vou tentar resolver dessa maneira davidbuzatto.
Obrigado pela ajuda.
Abraço
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 10:20:50
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
Oi groff.
O g2 é do tipo Graphics2D. É ele que vai fazer o desenho da imagem.
Antes de desenhar, obtenha o Graphics2D, sete os RederingHints e então mande pintar a imagem.
Você vai ver que ela vai ficar sem o serrilhado.
[]´s
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 10:22:03
|
luiz.portnoy
JavaChild
![[Avatar]](/images/avatar/e19de38bc4d7571373729c47843d6827.jpg)
Membro desde: 11/05/2010 13:56:09
Mensagens: 137
Localização: Vitória - ES
Offline
|
Então, existem alguns componentes que "fatiam" as imagens. Tem um se eu não me engano chamado Zoomify mas acho que ele é pago... Mas tem umas soluções free sim. Porque no seu caso para cada ampliação ou redução da escala você deve gerar ou resgatar outras imagens e não redimensiona-las. Isso causaria um peso absurdo na sua aplicação. Fatiar a imagem é melhor pois são várias requisições pequenas ao invés de uma gigante. Você usa MapServer? porque lá tem umas soluções para tiles se eu não me engano.
|
Triste: Mike Portnoy saiu do Dream Theater... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 10:43:28
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
davidbuzatto 01/06/2010 10:20:50 Assunto: Re:Como melhorar qualidade de imagem gerada ? -------------------------------------------------------------------------------- Oi groff. O g2 é do tipo Graphics2D. É ele que vai fazer o desenho da imagem. Antes de desenhar, obtenha o Graphics2D, sete os RederingHints e então mande pintar a imagem. Você vai ver que ela vai ficar sem o serrilhado. []´s
Opa, vlw david. Vou tentar aqui. Abraço.
luiz.portnoy 01/06/2010 10:22:03 Assunto: Re:Como melhorar qualidade de imagem gerada ? -------------------------------------------------------------------------------- Então, existem alguns componentes que "fatiam" as imagens. Tem um se eu não me engano chamado Zoomify mas acho que ele é pago... Mas tem umas soluções free sim. Porque no seu caso para cada ampliação ou redução da escala você deve gerar ou resgatar outras imagens e não redimensiona-las. Isso causaria um peso absurdo na sua aplicação. Fatiar a imagem é melhor pois são várias requisições pequenas ao invés de uma gigante. Você usa MapServer? porque lá tem umas soluções para tiles se eu não me engano.
É dessa forma mesmo que eu tava imaginando, mas por enquanto to só querendo gerar a imagem melhor. Porquê vai funcionar assim. Eu vou ter essa imagem que eu mostrei logo acima, só que ai mais pra frente vai ter uma layer com a imagem da cidade desse mapa. Eu vou setar o tamanho máximo da imagem e apartir daí, quando forem dar zoom ou arrastar o mapa(pan), vou gerar uma nova imagem e pintar na tela. A questão de resgatar uma imagem eu já tinha pensado. Para mim acho que seria até mais fácil porque ai eu já deixaria as imagens criadas e trabalharia em cima delas. O zoom seria pré-definido. Por enquanto to querendo fazer esse meu método gerar essa imagem melhor, criar o método do zoom e do pan depois. Não uso mapserver não. To utilizando Geotools + PostGis + PostGre + JTS.
This message was edited 1 time. Last update was at 01/06/2010 11:05:47
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 11:02:03
|
groff
Debugger
![[Avatar]](/images/avatar/491bf9a4259930aa7a779d25dae4fb09.jpg)
Membro desde: 29/03/2009 02:56:24
Mensagens: 60
Offline
|
Esse código me gerou uma imagem bem melhor. Gerando JPG ainda ficou um pouco de sujeira, mas a hora que gerei PNG, ficou ótima. Vlw Galera.  Só diminui o tamanho da imagem, pq o tamanho que tava gerando antes era exagerado. Mesmo naquele tamanho ficou muuito bom.
This message was edited 2 times. Last update was at 01/06/2010 13:31:32
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 11:25:44
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Dá uma lida aqui:
http://java.sun.com/docs/books/tutorial/2d/advanced/quality.html
Tem a descrição de bem mais opções de rendering hints.
|
@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 |
|
|
 |
|
|