Imagenes de 16 grises en Java
Publicado por Felix (26 intervenciones) el 23/12/2004 15:27:57
Estoy realizando un proceso de codificación de imágenes en Java, y ahora mismo lo quiero aplicar a una imagen de 16 tonos de grises.
Pues bien, leo mi imagen .gif que es 16 tonos de grises, y al imprimir los valores de cada pixel veo que están entre 0 y 15. Devuelvo el tipo de que es la imagen y compruebo que es de tipo TYPE_BYTE_BINARY. De momento creo que todo correcto. Ahora bien después de realizar todo el proceso de cifrado, cuando quiero escribir esta imagen cifrada a otro fichero, no se porque pero esos 16 tonos de grises se convierten en blanco y negro como por arte de magia; es más, imprimo los valores de los pixeles y son 0 o 1.
Bueno, en vez de tanta teoria os dejo escrito el trozo de código que he usado para leer y escribir a ver si me podeis decir donde fallo.
BufferedImage imagen=ImageIO.read(f); //Leemos imagen de un File f
//Ahora realizamos el proceso de cifrado que no escribo aqui para no extender esto.
//Proceso de crear la imagen que vamos a guardar.
//pixeles es un vector con todos los pixeles que he comprobado
//que tienen valores entre 0 y 15, de momento parece que correcto.
BufferedImage buffer=new BufferedImage(columnas,filas,BufferedImage.TYPE_BYTE_BINARY);
WritableRaster raster=buffer.getRaster();
raster.setPixels(0,0,columnas,filas,pixeles);
//Ahora bien si obtengo los datos de este raster, veo que ya son 0 o 1 en vez de los 16 posibles.
//Ahora ya mandaria esto a un fichero con ImageIO.write....
Espero que me podais ayudar porque estoy un poco verde en el tema.
Pues bien, leo mi imagen .gif que es 16 tonos de grises, y al imprimir los valores de cada pixel veo que están entre 0 y 15. Devuelvo el tipo de que es la imagen y compruebo que es de tipo TYPE_BYTE_BINARY. De momento creo que todo correcto. Ahora bien después de realizar todo el proceso de cifrado, cuando quiero escribir esta imagen cifrada a otro fichero, no se porque pero esos 16 tonos de grises se convierten en blanco y negro como por arte de magia; es más, imprimo los valores de los pixeles y son 0 o 1.
Bueno, en vez de tanta teoria os dejo escrito el trozo de código que he usado para leer y escribir a ver si me podeis decir donde fallo.
BufferedImage imagen=ImageIO.read(f); //Leemos imagen de un File f
//Ahora realizamos el proceso de cifrado que no escribo aqui para no extender esto.
//Proceso de crear la imagen que vamos a guardar.
//pixeles es un vector con todos los pixeles que he comprobado
//que tienen valores entre 0 y 15, de momento parece que correcto.
BufferedImage buffer=new BufferedImage(columnas,filas,BufferedImage.TYPE_BYTE_BINARY);
WritableRaster raster=buffer.getRaster();
raster.setPixels(0,0,columnas,filas,pixeles);
//Ahora bien si obtengo los datos de este raster, veo que ya son 0 o 1 en vez de los 16 posibles.
//Ahora ya mandaria esto a un fichero con ImageIO.write....
Espero que me podais ayudar porque estoy un poco verde en el tema.
Valora esta pregunta


0