Foros del Web » Programación para mayores de 30 ;) » Java »

pasar de java.awt.Image a bytes[]

Estas en el tema de pasar de java.awt.Image a bytes[] en el foro de Java en Foros del Web. buen dia foreros del web!!. tengo una imagen que de ser normal la puse a escala para hacerla mas pequeña, esto lo hize con la ...
  #1 (permalink)  
Antiguo 08/08/2019, 08:23
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 153
Antigüedad: 6 años, 2 meses
Puntos: 2
pasar de java.awt.Image a bytes[]

buen dia foreros del web!!.
tengo una imagen que de ser normal la puse a escala para hacerla mas pequeña, esto lo hize con la clase abstracat Image de la siguiente manera
Código Java:
Ver original
  1. Image img=Image.getScaledInstance(int width, int height, Image.SCALE_AREA_AVERAGING);
Ahora nesecito pasarla a bytes o a inputStream.
he estado de dandole y dandole y no he llegado a una solucion.
Alguno podria hecharme una manita por favor?.
  #2 (permalink)  
Antiguo 08/08/2019, 10:43
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.506
Antigüedad: 11 años
Puntos: 188
Respuesta: pasar de java.awt.Image a bytes[]

Usa BufferedImage para eso.

extension puede ser jpg, jpeg, bmp, png...

BufferedImage originalImage=ImageIO.read(new File("/rutaimagen/nombreimagen.extension"));
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.write(originalImage, "extension", baos );
byte[] imageInByte=baos.toByteArray();
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 08/08/2019, 15:56
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 153
Antigüedad: 6 años, 2 meses
Puntos: 2
Respuesta: pasar de java.awt.Image a bytes[]

Fuzzylog, gracias por contestar.
El punto es que el método read() recibe un objeto File(ruta) con una ruta para acceder al archivo nesecitado.

Y en este caso lo que hice fue recuperar una imagen que un usuario sube al servidor, yo la tomo, le redimensiono el tamaño, y luego quiero coger esa imagen redimensionada y transformarla a bytes[] y luego guardarla en un campo blob de la bd; lo cual y es lo que quiero decir es que la información guardada en Image no está guardado en una ruta, sino en la variable image, es por eso que quiero convertirla de una vez a byte y guardarla, que supongo yo que así puedo ahorrar recursos.
Eso es lo que me tiene pensando.
Espero haberme hecho entender.
  #4 (permalink)  
Antiguo 11/08/2019, 06:20
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.506
Antigüedad: 11 años
Puntos: 188
Respuesta: pasar de java.awt.Image a bytes[]

Prueba con esto. Conviertes tu Image a Buffered Image

/**
* Converts a given Image into a BufferedImage
*
* @param img The Image to be converted
* @return The converted BufferedImage
*/
public static BufferedImage toBufferedImage(Image img)
{
if (img instanceof BufferedImage)
{
return (BufferedImage) img;
}

// Create a buffered image with transparency
BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);

// Draw the image on to the buffered image
Graphics2D bGr = bimage.createGraphics();
bGr.drawImage(img, 0, 0, null);
bGr.dispose();

// Return the buffered image
return bimage;
}

y ya tienes la bufferedImage sobre la que aplicar el resto del código.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}



La zona horaria es GMT -6. Ahora son las 00:48.