Como transformar uma imagem em uma sequencia de bits?

Olá pessoal!!

Estou com uma dúvida, preciso transformar uma imagem em uma sequencia de bits e armazená-la em uma string, essas imagens serão somente em preto e branco, alguém já fez algo parecido?? Existe alguma classe implementada que já faça isso??

Grato desde já!

Atenciosamente
–Jans

Vc cria um FileInputStream indicando a figura isso te dá um array de bytes e depois é so percorre-lo e concatenar para uma String.
Deve ter maneiras mais elegantes, mas essa funciona!

Diga pra que vc precisa fazer isso, que fica mais fácil de propor soluções.

Cara, tem uns jeitos mais tranquilos de fazer isso, procure informações sobre a classe Raster, ela tem um método, getPixels, que te retorna os samples da imagem.

[quote=“deneroliveira”]Vc cria um FileInputStream indicando a figura isso te dá um array de bytes e depois é so percorre-lo e concatenar para uma String.
Deve ter maneiras mais elegantes, mas essa funciona!

Diga pra que vc precisa fazer isso, que fica mais fácil de propor soluções.[/quote]

Estou estudando métodos de reconhecimento de padrões nas imagens, e adotei java como linguagem de programação, e esses estudos requerem alguns processamentos de imagens, tipo binarizacao, esqueletização thinning, eu estou tentando utilizar alguns pacotes existentes,o que nao tive ainda, caso não tenha sucesso com os mesmos terei que estudar algoritmos para implementa-los… até agora nao consegui manipular legal imagens em java, e eu preciso por enquanto pegar uma cadeia de bits sequenciais de uma imagem colocando ela em uma string.

–Jans

Como te falei, depois que você tem uma instância da classe Raster, fica fácil manipular os samples.

Supondo que você quer abrir um arquivo JPEG, você pode usar a classe JPEGImageDecoder. Seria mais ou menos assim:

InputStream arquivoJpeg = // abra seu arquivo Jpeg aqui, como qualquer outro
JPEGImageDecoder jpegCodec = JPEGCodec.createJPEGDecoder(arquivoJpeg);
Raster raster = jpegCodec.decodeAsRaster();

Pronto, dessa forma você tem um objeto da classe Raster, que representa os samples da imagem. Com essa instância você consegue chamar o getPixels para obter um array com os samples da imagem. Dá uma olhada na documentação java doc da classe: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/Raster.html

Bom, acho que isso responde sua pergunta inicial, de como adquirir os pixels da imagem.

Quanto a questão da binarização, Java já possui classes para isso, procure na documentação do Java 2D. Tem um tutorial no java world também, dá uma olhada em http://www.javaworld.com/javaworld/jw-09-1998/jw-09-media.html . Tem um livro sobre Java 2D no site da sun, http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec/j2d-bookTOC.html

Bom, se o que você precisa fazer é algo mais avançado, existe a API Java Advanced Imaging API, mas essa eu nunca usei e não sei o que tem nela. Na Java 2D você consegue fazer operações básicas, rotacionar, binarização, usar lookup table, algumas transformações etc.

É isso, espero que tenha ajudado um pouco.

[]'s
carisio

carisio,

Valeu mano!! Consegui desenvolver utilizando a classe Raster!!! Vou dar uma olhada nessa outra parte que vc comentou!!

Obrigado.

–Jans

Blz!
Precisando de qq coisa, é só falar!

[]'s
carisio