Comment stocker un tableau d'octets en tant que fichier image sur le disque?
J'ai un tableau d'octets de la représentation d'une Image. Comment les enregistrer sur le disque en tant que fichier image.
Je l'ai déjà fait cette
OutputStream out = new FileOutputStream("a.jpg");
out.write(byteArray);
out.flush();
out.close();
Mais quand j'ouvre l'image en double-cliquant dessus, il ne montre pas toute l'image.
source d'informationauteur Yatendra Goel
Vous devez vous connecter pour publier un commentaire.
Autres que de ne pas utiliser un try/finally bloc (au moins dans le code que vous avez montré) qui doit être fine. (Vous n'avez pas besoin de rincer un flux de sortie si vous êtes à la clôture, en passant.)
Que ça ne fonctionne pas, suggère que
byteArray
n'est pas fait contenir un JPEG-image encodée. Comment avez-vous créébyteArray
pour commencer? Si c'est une "brute" de la représentation, vous aurez probablement envie de le coder, par exemple, à l'aide de la javax.imageio paquet.Vous pouvez utiliser le FileOutputStream classe:
Vous pouvez utiliser ImageIO API.
Les détails peuvent être un peu poilu, mais d'abord, vous souhaiterez probablement créer une BufferedImage à l'aide de TYPE_BYTE_INDEXED type et certains approprié IndexColorModel instance. Ensuite, mettre votre tableau d'octets. Astuce: vous pouvez obtenir la représentation interne de BufferedImage avec:
Qui sera probablement de retour d'un tampon de données de type DataBufferByte (check!), partir de laquelle vous obtenez un tableau d'octets avec
Ensuite, vous pouvez utiliser le Système.arraycopy pour copier votre tableau d'octets sur que.