Convertir un tableau d'octets en image en Java - sans connaître le type
Sons simple droit? Utilisation
ImageIO.read(new ByteArrayInputStream(bytes));
Voici la ride. Pour une raison quelconque, il est de la détection d'un jpeg bmp, et c'est la première ImageReader retourné quand je l'appelle
ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes));
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis);
Cela provoque l'image à sortir corrompu. Est-il un moyen de dire à travers java court de regarder directement les octets pour l'en-tête, et, à défaut, personne ne sait d'une bonne référence pour l'octet d'en-têtes pour les différentes images?
Laisser les gars, vous savez que je suis toujours à travailler sur ce. Je vais vous laisser savoir si/quand j'ai une réponse. Je vous remercie tous de vos réponses jusqu'à présent.
source d'informationauteur PHeath
Vous devez vous connecter pour publier un commentaire.
Cette page pourrait être un bon point de départ pour les nombres magiques. Ici est quelque chose de similaire à partir de Wikipedia.
N'ai pas joué avec ImageIO dans un certain temps, et n'ai pas testé, mais il me semble quelque chose de ce genre de travail. (puisque vous dites que vous savez que votre fichier est un fichier jpg et pas une image bitmap, je suis en utilisant cette information pour aider à trouver le bon chargeur).
Pour la référence, vous pouvez avoir un coup d'oeil à wikipédia, vous pouvez trouver l'en-tête de l'différents formats.
http://en.wikipedia.org/wiki/Graphics_Interchange_Format
http://en.wikipedia.org/wiki/BMP_file_format
http://en.wikipedia.org/wiki/JPEG
Est le BMP, le lecteur de seulement celui retourné par
getImageReaders()
? Peut-être vous avez plus d'un et pouvez faire un choix sur cette base.