Faire un zoom net et rapide en java [Résolu]

Signaler
Messages postés
14
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
7 juillet 2011
-
Messages postés
14
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
7 juillet 2011
-
Bonjour tout le monde,
j'essaye de faire depuis environs 1 mois un code permettant de faire un zoom sur une image. j'ai essayé :

int width = (int) (sourceImageWidth * zoom);
int height = (int) (sourceImageHeight * zoom);
Mon_image_zoomée = image_initial.getScaledInstance(width, height, Image.SCALE_SMOOTH);

Avec ceci la qualité est parfaite mais cela met beaucoup de temps environs 2 à 3 secondes car j'utilise des images très lourdes en 140 dpi et 1160 * 1640 . J'ai donc cherché autre chose qui est:

Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
AffineTransform transformationZoom = AffineTransform.getScaleInstance(zoom, zoom);
g2.drawImage(image, transformationZoom, this);

Avec ceci la rapidité est parfaite mais la qualité est vraiment médiocre.

Je suis donc à la recherche d'un morceau de code me permettant d'avoir la qualité de la première solution et la rapidité de la deuxième.


Merci d'avance pour vos réponses.

2 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
118
Salut,

T'as pas l'impression de vouloir le beurre et l'argent du beurre...

Essaye de voir avec JAI (java advanced image) : tu devrais avoir la même qualité, mais ca devrait être plus rapide car elle possède une bibliothèque native. Par contre, le prix à payer, c'est la dépendance à une dll ou un .so... et donc prévoir un déploiement différent selon l'OS utilisé.

Pour un exemple concret, voir ma source de wordart où je l'utilise pour faire le warp de l'image.
______________________________________
DarK Sidious
Messages postés
14
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
7 juillet 2011

Merci bien pour ta réponse je vais essayer.