Quantidade de cores em imagens

Fala galerinha…

Tô com um problemão…

Tenho uma aplicação desktop onde o cara adiciona “mapas” (extends JGraph) e dentro desses mapas o figura pode add imagens limitando somente o tamanho do arquivo em 1M. Porém não limita as dimensões…

Problema é que uma imagem com XY 3000x2000 aumenta a memória em 30M mais ou menos, isso sem falar no processamento pra renderizar essa imagem…

O que estava pensando era diminuir a quantidade de cores das imagens quando o cara add pra diminuir essa sobre carga.

Alguém tem idéia do que seria melhor utilizar?.. ou mesmo uma idéia melhor que essa que resolvesse…

Abraçooooo

Quando você for exibir a Imagem, caso ela seja muito grande você pode dar um resize nela…
Ex: http://sujitpal.blogspot.com/2007/06/scaling-images-with-java.html
http://code.google.com/p/java-image-scaling/

Já se você quiser testar a questão da qualidade tem uma biblioteca que pode ajudar…
http://www.jhlabs.com/ip/filters/index.html

Ela tambem tem um resize …

Para responder essa pergunta, primeiro tem que responder:

  1. O que seu usuário quer?
  2. Pq carrega imagens tão grandes?
  3. O quão importante é manter a resolução da imagem? E a definição de cores? E as dimensões?
  4. O quão importante é ter uma aplicação rápida, ou consumir pouca memória?

Antes disso, você só pode especular.

[quote=ViniGodoy]Para responder essa pergunta, primeiro tem que responder:

  1. O que seu usuário quer?
  2. Pq carrega imagens tão grandes?
  3. O quão importante é manter a resolução da imagem? E a definição de cores? E as dimensões?
  4. O quão importante é ter uma aplicação rápida, ou consumir pouca memória?

Antes disso, você só pode especular.[/quote]

Fala ae Vini…

Respondendo:

  1. Utilizar mapas de ruas para localização.
  2. Quem define o tamanho as dimensões é o usuário de acordo com sua necessidade.
  3. A resolução é importante pra manter pelo menos legível. A definição de cores já não creio ser tão importante. As dimensões idem 2.
  4. O ideal seria ambos. Rápida e pouca memória… mas diminuir o consumo é o maior problema atualmente.

Valeu…

Abraço!!!

Up!!! :slight_smile:

Não upe tópicos.

Estava dizendo que você precisa responder isso para si mesmo, não para mim. Veja bem, é necessário fazer uma análise dos requisitos de sua aplicação. Por isso eu disse “O quão importante é” e não “Qual é a importancia de” (que foi o que você me explicou).

Só sabendo “o que é mais importante do que o que” você vai poder dizer se deverá reduzir as dimensões da imagem, usar um algoritmo que talvez reduza a quantidade de cores (como uma compressão lossy), ou se vai dizer pro seu usuário que infelizmente é assim mesmo, e não tem como ter máxima resolução sem tempo de espera, a menos que ele providencie uma rede mais rápida.

O mesmo vale para os requisitos em termo de recursos. Se for imprescindível que sua aplicação não ocupe memória, você terá que fazer seu usuário escolher entre perda de cores, ou perda de resolução… ou mostrará para ele que ele terá que comprar mais memória. Mas quem decide entre essas três opções é o usuário, não o programador.

[quote=ViniGodoy]Não upe tópicos.

Estava dizendo que você precisa responder isso para si mesmo, não para mim. Veja bem, é necessário fazer uma análise dos requisitos de sua aplicação. Por isso eu disse “O quão importante é” e não “Qual é a importancia de” (que foi o que você me explicou).

Só sabendo “o que é mais importante do que o que” você vai poder dizer se deverá reduzir as dimensões da imagem, usar um algoritmo que talvez reduza a quantidade de cores (como uma compressão lossy), ou se vai dizer pro seu usuário que infelizmente é assim mesmo, e não tem como ter máxima resolução sem tempo de espera, a menos que ele providencie uma rede mais rápida.

O mesmo vale para os requisitos em termo de recursos. Se for imprescindível que sua aplicação não ocupe memória, você terá que fazer seu usuário escolher entre perda de cores, ou perda de resolução… ou mostrará para ele que ele terá que comprar mais memória. Mas quem decide entre essas três opções é o usuário, não o programador.

[/quote]

Dae vini…

Resumindo…

Preciso de algo que possa diminuir a quantidade de cores.

Conhece algo?

Abraço

Sim, use o ImageIO para converter a imagem para gif. Procure sobre Lossy Compression. Existem algoritmos já prontos para o Java na JAI.