Bonjour à tous et à toutes,
je suis un jeune et heureux papa, et les photos numériques fusent et gonflent mon disque dur dangereusement. J'ai un appareil de 5Millions de pixels, et sur l'année 2004, j'ai pris + de 650 photos, pour un total de 1,33Go d'espace disque (entre 2 et 3Mo / photo). Or l'intérêt de conserver une photo en 5 millions de pixels concerne surtout l'éventualité de la développer en grand format (20x30 ou +). Et seuls 5% de ces photos méritent d'être agrandies, voire même développées. Cependant, je désire les archiver quand même. Je pense avoir trouvé un bon compromis en compressant ces photos avec dosage pour avoir un bon rapport entre espace disque et qualité qui me permette de les développer dans le futur en format minimal 10x13. Pour celà, je désirais créer un petit programme java qui parserait mon répertoire contenant mes photos, et pour chacune d'entre elles, appliquer un traitement (comme sous un logiciel type photoshop) pour réduire leur taille (de 3Mo à 500Ko) :
- passer la résolution de 2592x1944 à 1024x768
- réduire la qualité de l'image en jouant sur le taux de compression appelé "JPEG quality factor" dans la plupart des logiciels de retouche (échelle de 1 à 12 chez photoshop).
J'ai découvert récemment que le JDK 1.4 fournissait déjà des objets (package javax.imageio.ImageIO) permettant de jouer avec des images. Je pense en outre avoir trouvé le bout de code permettant de réduire la résolution :
Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 double scaleValue = 0.5; String nom = "test"; BufferedImage photo = ImageIO.read(new File(nom + ".jpg")); AffineTransform tx = new AffineTransform(); tx.scale(scaleValue, scaleValue); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); BufferedImage photo_2 = new BufferedImage( (int) (photo.getWidth() * scaleValue), (int) (photo.getHeight() * scaleValue), photo.getType()); photo_2 = op.filter(photo, photo_2); boolean vrai = ImageIO.write(photo_2 , "jpg", new File(nom + "_2.jpg"));
Quelqu'un aurait-il une idée pour jouer sur ce fameux "JPEG quality factor" ??
Par avance merci beaucoup de vos éventuelles réponses.
Cordialement
Partager