Comment convertir BufferedImage à InputStream?
Je suis le téléchargement d'images à l'aide de servlet. Pour effectuer des opérations de redimensionnement je suis la conversion InputStream de BufferedImage. Maintenant, je veux l'enregistrer dans mongoDB. Depuis, je suis nouveau sur mongoDB pour autant que je sais, GridFS prend InputStream.
Donc, est-il un moyen de convertir BufferedImage à InputStream?
OriginalL'auteur | 2010-11-22
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour économiser de l'BufferedImage à un
ByteArrayOutputStream
à l'aide de laImageIO
de la classe, puis créer unByteArrayInputStream
detoByteArray()
.+1. et cette méthode copie les données non pas une fois mais deux fois! une fois lors de l'écriture de ByteArrayOutputStream et puis, de nouveau, en le convertissant en un tableau d'octets lorsque toByteArray() est appelée.
Vous pouvez trouver le code ci-dessous
OriginalL'auteur SLaks
Tout d'abord, vous devez obtenir votre "octets":
Et ensuite utiliser ByteArrayInputStream(byte[] buf) constructeur pour créer votre InputStream;
OriginalL'auteur Edward83
essayer cette
Avez-vous fait l'importer correctement. Le constructeur est correct. docs.oracle.com/javase/7/docs/api/java/io/...
N'y a rien besoin d'être fermé à n'importe où? Je ne demande pas à être méchant, simplement, je ne sais pas 😉
Laissez votre IDE de le faire pour vous.
OriginalL'auteur Sorter
Par substitution de la méthode
toByteArray()
, en retournant lebuf
lui-même (pas de copie), vous pouvez éviter les problèmes de mémoire liés à des problèmes. Cela permettra de partager la même matrice, et de ne pas créer d'autre de la taille correcte. La chose importante est d'utiliser lesize()
méthode pour contrôler le nombre de bytes dans le tableau.OriginalL'auteur Igor