Faire un zoom net et rapide en java

Résolu
alex10843 Messages postés 14 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 7 juillet 2011 - 20 juil. 2009 à 17:07
alex10843 Messages postés 14 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 7 juillet 2011 - 20 juil. 2009 à 17:18
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 juil. 2009 à 17:15
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
3
alex10843 Messages postés 14 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 7 juillet 2011
20 juil. 2009 à 17:18
Merci bien pour ta réponse je vais essayer.
0
Rejoignez-nous