Limpar BufferedImage  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Galera, to precisando limpar um BufferedImage, procurei na internet e achei algumas soluções não muito boas:

Solução 1:

Todas as vezes que precisar limpar um buffer eu crio um novo objeto =P

Solução 2:

//Fazer um for do 0,0 ateh width, height e pintar todos os pixels...

g2D.setComposite( AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));
Rectangle2D.Double rect = new Rectangle2D.Double(0,0,width,height);
g2D.fill(rect);

Solução 3
Essa parece boa, está disponível em um fórum aki:

> In my case, I found that I needed to control a lot of pixels directly,
> so I created an external JNI assembler library to allow me to
> *quickly* change pixels.

Mas infelizmente o cara naum colocou o código =(
Alguém ja fez algo pra limpar BufferedImage?
obrigado

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
WillyKocher
JavaTeenager

Membro desde: 12/03/2007 14:47:07
Mensagens: 188
Offline

solução 2, repintar a tela e a solução que é + usada pelo menos quando eu li o killer game programming (acho que é esse o nome ) , lembro de eles usarem esta tecnica.

SCJP 6.0 - 91%
SCWCD 5.0
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Ok. Obrigado, então acho vou fzer isso msm

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
KWill
Virtual Machine Man
[Avatar]

Membro desde: 18/09/2006 10:05:46
Mensagens: 609
Offline

felixcomputer wrote:Galera, to precisando limpar um BufferedImage, procurei na internet e achei algumas soluções não muito boas:

Solução 1:

Todas as vezes que precisar limpar um buffer eu crio um novo objeto =P

Solução 2:

//Fazer um for do 0,0 ateh width, height e pintar todos os pixels...

g2D.setComposite( AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));
Rectangle2D.Double rect = new Rectangle2D.Double(0,0,width,height);
g2D.fill(rect);

Solução 3
Essa parece boa, está disponível em um fórum aki:

> In my case, I found that I needed to control a lot of pixels directly,
> so I created an external JNI assembler library to allow me to
> *quickly* change pixels.

Mas infelizmente o cara naum colocou o código =(
Alguém ja fez algo pra limpar BufferedImage?
obrigado


Enquanto eu fazia o meu software de acesso remoto em Java, o "Satan-AnyWhere", acabei pesquisando uns meios de se manipular rapidamente o conteúdo dos pixels de BufferedImage's.
Primeiro, deve-se saber qual o "DataType" do DataBuffer do WritableRaster do BufferedImage, o que pode ser feito via "BufferedImage.getRaster().getDataBuffer().getDataType()", que vai te retornar um inteiro que tu precisa comparar com as "constantes" da classe DataBuffer.
Sabendo qual o "DataType", dê o cast para classe filha de DataBuffer correspondente (DataBufferByte, DataBufferShort, DataBufferInt) ao retorno de "BufferedImage.getRaster().getDataBuffer()".
Depois, é só manipular o conteúdo do retorno de método "getBankData()" da classe filha de DataBuffer correspondente, que normalmente é um array de array de bytes, shorts ou ints, conhecido também como array bidimensional. Os pixels estariam nesse array bidimensional. O primeiro índice do array bidimensional indica qual o "bank" e o segundo índice indica qual a posição do dado no "bank".
Se você achar esse jeito muito complicado, a classe filha de DataBuffer correspondente também tem outros métodos para manipulação dos dados dentro dela mais interessantes.

Inté.

This message was edited 1 time. Last update was at 13/11/2008 16:09:28


"Só estou certo de que não possuo outras certezas" - KWill
"Não penso, mas Googlo, logo existo!" - Geração Copy-Cola
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Olá amigo, obrigado pela sua resposta... estarei testando a solução \o/

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team