Per un'applet su cui sto lavorando Devo convertire un file BufferedImage
in un flusso di input in modo che possa caricare l'immagine sul mio server MySQL. Originariamente stavo usando questo codice:Java conversione di un'immagine in un flusso di input SENZA creazione di un file
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");
}
(mentre la cattura le eccezioni rilevanti) Il codice si blocca sul la parte in cui l'applet tenta di salvare l'immagine sul computer. Il codice funzionava perfettamente in Eclipse o ogni volta che eseguivo l'applet dal localhost, quindi presumo che il problema sia nei privilegi che l'applet ha nel salvare i file sul computer dell'utente.
Mi stavo solo chiedendo se ci fosse un modo per trasformare il file immagine in un inputstream senza dover salvare un file sul computer dell'utente. Ho provato ad utilizzare:
ImageIO.createImageInputStream(image);
Ma poi non ho potuto convertire il ImageInputStream
di nuovo ad un InputStream
. Eventuali suggerimenti?
Grazie!
argh! lo stesso codice che legge da un database esegue l'elaborazione delle immagini !! È raccapricciante. Per favore leggi: [Cohesion] (http://en.wikipedia.org/wiki/Cohesion_ (computer_science)), [Coupling] (http://en.wikipedia.org/wiki/Coupling_ (computer_science)) –
Sì, probabilmente è non la migliore pratica. Grazie per le informazioni, dovrò ripararlo più tardi. – David
Possibile duplicato di [Come convertire BufferedImage in InputStream?] (Http://stackoverflow.com/questions/4251383/how-to-convert-bufferedimage-to-inputstream) –