Re-dimensionnement d'images à partir d'un diaporama
Objectifs
Il s'agit de mettre en place une application permettant de changer la dimension d'une image à partir de notre diporama. L'application finale sera aussi proche que possible des représentations données ci-dessous.
Programmation
Ce TD est dans la continuation du TD précédent sur le diaporama.
Etape 1 : Une fenêtre, une image et des composants
Vous écrirez une classe JFrameTailleImage correspondant à l'image ci-dessous. Cette classe comporte :
- une zone d'affichage des images (peut-être une autre classe si vous pensez que c'est nécessaire)
- deux labels et deux zones de texte
- deux barres de réglage des valeurs de Largeur et de Hauteur (composants JSlider)
- un checkbox permettant d'indiquer si l'on souhaite garder le ratio Hauteur/Largeur ou non
- deux bouttons
Exemple AVEC conservation du ratio
|
Exemple SANS conservation du ratio
|
Vous veillerez aux actions suivantes :
- le déplacement de chaque curseur entraîne la mise à jour du champs texte associé et vice-versa (un changement de valeur dans la zone de texte entraîne un déplacement du curseur)
- si l'option "Garder ratio" est activée tout changement sur l'une des dimension entraîne un changement sur l'autre afin de conserver un même rapport Largeur/Hauteur
- un changement des paramètres de Largeur et de Hauteur entraîne un changement de taille de l'image affichée
- un click sur "Enregistrer ..." entraînera l'affichage d'une fenêtre de choix de fichier et l'enregistrement de l'image redimensionnée (utilisez ImageIO.write(...))
Indication : Pour re-dimensionner une image, vous utiliserez la méthode ci-dessous :
private static BufferedImage resize(Image image, int width, int height) {
BufferedImage resizedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(image, 0, 0, width, height, null);
g.dispose();
return resizedImage;
}
Etape 2 : Ouvir une fenêtre par double click sur une image
A partir de la classe JPanelDiapo du TD précédent vous écrirez une nouvelle classe JPanelDiapoResize qui réagirat à un double click sur la zone d'image en ouvrant une fenêtre JFrameTailleImage.