Comment puis-je convertir un objet BufferedImage en un InputStream ou un BLOB?
Je suis en train de stocker une image téléchargée par l'utilisateur dans la base de données avec un LONGBLOB
attribut... j'ai rencontré un problème avec un PreparedStatement
qui a deux méthodes pour définir un blob qui sont:
public void setBinaryStream(int parameterIndex, InputStream x)
public void setBlob(int parameterIndex, Blob x)
public void setBlob(int parameterIndex, InputStream inputStream)
Maintenant, le problème est que j'ai un BufferedImage
objet qui doit être converti en Blob
ou InputStream
à télécharger...
Comment puis-je le faire sans perte de l'original format de l'image ou de la qualité?
source d'informationauteur Asif
Vous devez vous connecter pour publier un commentaire.
Vous devez l'enregistrer à l'aide de certains appropriées (lossless) en format. Le format png est une option.
La
ImageIO
classe possède des méthodes pour écrire une image à un flux de sortie.Voici un exemple complet de vous obtenir un
InputStream
à partir de laquelle vous pouvez lire le format PNG-représentation du contenu d'unBufferedImage
:Voici un exemple de code:
N'oubliez pas de vérifier la deuxième ImageIO.écrire paramètre format d'image requis (par exemple, "jpg", "bmp", "png").
Écrire des fonctions serialize/unserialize la BufferedImage
à partir d'un
byte []
et de l'utilisation des classesByteArrayInputStream
etByteArrayOutputStream
.Vous avez probablement besoin de sérialiser le type d'image, la largeur, la hauteur
et le pixel de l'image (valeurs obtenues avec
BufferedImage.getRGB(x, y)
).L'alternative est d'appeler
ImageIO.write(image, "png", outStream)
pour convertir l'image au format PNG et de l'écrire sur un
ByteArrayOutputStream
. Il y a un équivalentImageIO.read(inputStream)
méthode de lecture de l'image à partir d'un
ByteArrayInputStream
.Il y a quelques surcharge de traitement dans la conversion de leur/de la PNG.
Mais le PNG est un format d'image compressé et vous permettra d'économiser beaucoup
de l'espace par rapport à stocker les images non compressées.
Pour créer un Blob: