Para un applet en el que estoy trabajando Necesito convertir un archivo BufferedImage
en una secuencia de entrada para poder subir la imagen a mi servidor MySQL. Al principio yo estaba usando este código:Java convirtiendo una imagen en una secuencia de entrada SIN crear un archivo
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection =
DriverManager.getConnection(connectionURL, "user", "pass");
psmnt = connection.prepareStatement(
"insert into save_image(user, image) values(?,?)");
psmnt.setString(1, username);
ImageIO.write(image, "png", new File("C://image.png"));
File imageFile = new File("C://image.png");
FileInputStream fis = new FileInputStream(imageFile);
psmnt.setBinaryStream(2, (InputStream)fis, (fis.length()));
int s = psmnt.executeUpdate();
if(s > 0) {
System.out.println("done");
}
(mientras se pone las excepciones pertinentes) El código se cuelga en la parte en la que el applet intenta guardar la imagen en el ordenador. El código funcionaba perfectamente en Eclipse o cada vez que ejecutaba el applet desde el host local, así que supongo que el problema radica en los privilegios que tiene el applet para guardar archivos en la computadora del usuario.
Me preguntaba si había una manera de convertir el archivo de imagen en un flujo de entrada sin tener que guardar un archivo en la computadora del usuario. He intentado utilizar:
ImageIO.createImageInputStream(image);
Pero entonces yo no podía convertir el ImageInputStream
de nuevo a un InputStream
. ¿Alguna sugerencia?
Gracias!
argh! el mismo código que lee desde una base de datos hace el procesamiento de imágenes !! Eso es horrible. Por favor, lea: [Cohesion] (http://en.wikipedia.org/wiki/Cohesion_ (computer_science)), [Coupling] (http://en.wikipedia.org/wiki/Coupling_ (computer_science)) –
Sí, es probable que no es la mejor práctica. Gracias por la información, tendré que arreglarlo más tarde. – David
Posible duplicado de [Cómo convertir BufferedImage a InputStream?] (Http://stackoverflow.com/questions/4251383/how-to-convert-bufferedimage-to-inputstream) –