Comment calculer java BufferedImage de la taille des fichiers
J'ai une servlet qui est de servir les images à partir de fichiers stockés localement. J'ai ajouté une logique qui va permettre à l'application à charger le fichier image sur un BufferedImage et puis redimensionner l'image, ajouter un filigrane de texte au-dessus de l'image, ou les deux.
Je voudrais régler la longueur du contenu avant l'écriture de l'image. En dehors de l'écriture de l'image dans un fichier temporaire ou le tableau d'octets, est-il un moyen de trouver la taille de la BufferedImage?
Tous les fichiers sont écrits comme des jpg si cela peut vous aider dans le calcul de la taille.
OriginalL'auteur GregA100k | 2009-03-10
Vous devez vous connecter pour publier un commentaire.
Non, vous devez écrire le fichier dans la mémoire ou dans un fichier temporaire.
La raison en est qu'il est impossible de prédire comment l'encodage JPEG affectera la taille du fichier.
Aussi, il n'est pas assez bon pour "deviner" à la taille du fichier; la
Content-Length
en-tête doit être sur place.OriginalL'auteur Jason Cohen
OriginalL'auteur Petr
Bien, le BufferedImage ne sait pas qu'il a été écrit comme un JPEG, autant qu'il est concerné, il peut être au format PNG ou GIF et TGA ou TIFF ou BMP... et tous ceux qui ont des tailles de fichiers. Donc je ne crois pas il n'y a aucune façon de l'BufferedImage pour vous donner une taille de fichier directement. Vous aurez juste à l'écrire et compter les octets.
OriginalL'auteur David Z
Sauf si c'est un très petit fichier image, préfèrent utiliser des fragments de codage sur la spécification d'une longueur de contenu.
Il a été noté dans un ou deux récentes stackoverflow podcasts que les proxies HTTP signalent souvent qu'ils prennent uniquement en charge le protocole HTTP/1.0, qui peut être un problème.
OriginalL'auteur Tom Hawtin - tackline
Vous pouvez calculer la taille d'une BufferedImage dans la mémoire très facilement. C'est parce qu'il est un wrapper pour un WritableRaster qui utilise un DataBuffer pour la sauvegarde. Si vous voulez calculer la taille de la mémoire vous pouvez obtenir une copie de l'image raster à l'aide de getData (), et en mesurant la taille de la mémoire tampon de données dans la trame.
OriginalL'auteur Verna Smith
Avant de charger le fichier image comme un BufferedImage faire une référence vers le fichier image via le Fichier objet.
imgLength serait approximative de votre taille de l'image si elle varier après le redimensionnement, puis toutes les opérations que vous effectuez sur elle.
OriginalL'auteur vpointer