Java convertissant une image en un flux d'entrée SANS créer un fichier
Pour une applet, je travaille sur j'ai besoin de convertir un BufferedImage
fichier à un flux d'entrée, de sorte que je peux télécharger l'image sur mon serveur MySQL. À l'origine, j'ai été en utilisant ce code:
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");
}
(tout en attraper les exceptions pertinentes) Le code se bloque sur la partie où l'applet tentatives pour enregistrer l'image sur l'ordinateur. Le code a fonctionné parfaitement dans Eclipse ou à chaque fois que j'ai couru l'applet à partir de localhost, donc je suis en supposant que le problème est dans les privilèges que l'applet dans l'enregistrement de fichiers sur l'ordinateur de l'utilisateur.
J'étais juste me demandais si il y avait un moyen de transformer le fichier d'image dans un inputstream sans avoir à enregistrer un fichier sur l'ordinateur de l'utilisateur. J'ai essayé d'utiliser:
ImageIO.createImageInputStream(image);
Mais alors je ne pouvais pas convertir le ImageInputStream
retour à une InputStream
. Des Suggestions?
Merci!
source d'informationauteur David
Vous devez vous connecter pour publier un commentaire.
En règle générale, vous utilisez un ByteArrayOutputStream à cette fin. Il agit comme un flux de mémoire.
Avez-vous essayé d'écrire à un
ByteArrayOutputStream
et ensuite, la création d'unByteArrayInputStream
à partir des données à lire à partir de? (AppeltoArray
sur leByteArrayOutputStream
et ensuite appeler le constructeur deByteArrayInputStream
qui se terminera que le tableau d'octets).Être prudent en utilisant BytArray flux: si l'image est grande, que le code suivant ne fonctionnera pas. je n'ai pas fait beaucoup applet de codage, mais il est possible que la temp dir est disponible pour l'écriture (par exemple,
File.createTempFile()
).