2010-02-21 13 views

Répondre

6

Il y a des articles complets sur la façon de le faire sur le net, quelque chose comme ceux-ci devraient vous permettre de continuer:

+1

effectivement je parlais de la taille du fichier (3mb -> 200 kb), pas les dimentions de l'image. Est-ce que ça les couvre aussi? – Anand

+0

@Anand avez-vous trouvé la solution? –

5

Vous pouvez » t redimensionner facilement une image d'une taille de fichier à l'autre, MAIS, la plupart des JPG/PNG/GIF/etc. ont tendance à avoir des tailles de fichiers similaires en fonction de leurs résolutions. Par exemple, un fichier JPG compressé de 200 Ko peut généralement avoir une taille de 1280 x 960. Si tel est le cas, vous devez simplement cibler toutes vos opérations de redimensionnement pour dimensionner les images cibles à cette taille et obtenir à peu près la contrainte de taille souhaitée.

Un moyen très simple de faire cela est d'utiliser très simple Java image resizing library (licence Apache 2) qui fait tout pour vous. Exemple de code à redimensionne ressemblerait à ceci:

BufferedImage img = ImageIO.read(...); // load image 
BufferedImage scaledImg = Scalr.resize(img, 1280, 960); 

Vos proportions de l'image sont à l'honneur, la bibliothèque fait une meilleure deviner à la méthode, il doit utiliser en fonction de la quantité de changement dans l'image en raison de mise à l'échelle (FASTEST, ÉQUILIBRÉ ou QUALITÉ) et les meilleurs types d'image Java2D pris en charge sont toujours utilisés pour effectuer la mise à l'échelle afin d'éviter les résultats «noirs» ou une sortie vraiment horrible (par exemple, des images GIF trop tremblantes).

Aussi, si vous voulez le forcer à produire le meilleur résultat à la recherche possible en Java, l'appel API ressemblerait à ceci:

BufferedImage img = ImageIO.read(...); // load image 
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY, 1280, 960); 

La bibliothèque utiliser le Java2D recommandé échelle supplémentaire pour vous pour vous donner le meilleur résultat.

Vous pouvez lire tous les commentaires de la bibliothèque (le code lui-même est fortement docu) pour voir tous les différents bogues JDK qui sont travaillés ou les optimisations qui sont faites pour améliorer les performances ou l'utilisation de la mémoire. J'ai passé beaucoup de temps à mettre au point cette implémentation et j'ai eu beaucoup de bons retours de la part des gens qui l'ont déployée dans des applications web et d'autres projets Java.

Questions connexes