School project : Nov. 2018
- Introduction
- Difficultés rencontrées
- Fonctionnalités de base
- Extensions
- Interface utilisateur
- Exemple de résultats
Java 11, JavaFx
Rendu : 30 novembre
L’objectif de ce projet est l’implémentation d’une application de redimensionnement d’image en Java. Cette application permettra d'effectuer les opérations suivantes sur une image : recadrage, mise à l’échelle et seam carving.
-
resizing (mise à l'échelle)
- à effectuer sur la BufferedImage plutôt que sur l'ImageView
-
crop (recadrage)
- dépendant du FXML et de sa définition de l'ImageView
-
gradient
- a soulevé le problème de la copie de la BufferedImage
-
on a rencontré des erreurs de type NullPointerException. Il a fallu résoudre ce problème par des if pour traiter les les exceptions
-
quand nous avons travaillé avec les images, on a remarqué qu'il était nécessaire de les cloner pour en avoir une bonne copie
-
l'interface utilisateur plante durant le processing -> trouver un moyen de faire tourner les tâches en arrière plan
-
rajout d'une image de taille plus faible que l'image du château (Broadway) pour que les opérations soient plus rapides à effectuer et à tester
-
nous avons rencontrés des bugs et ajouté des tests afin de les trouver
-
problèmes lors du traitement des différents canaux de couleur. On a donc ajouté un enum pour éviter de se mélanger et clarifier le traitement des différentes couleurs.
Cette opération permet d'ouvrir un fichier contenant une image, dans le but de l'éditer.
Choix d'implémentation :
- Ajout d'un chemin par défaut contenant plusieurs images d'exemple.
- Limitation aux fichiers image de type JPEG.
Mode d'emploi : Au clavier Ctrl + O
ou à partir du menu File > Open.
Cette opération découpe l'image pour ne garder que le pourcentage de l'image d'origine choisi avec le curseur.
Choix d'implémentation :
- Pour le recadrage suivant la largeur, on fait le choix de ne garder que la partie gauche de l'image.
- Pour le recadrage suivant la hauteur (extension), on fait le choix de ne garder que la partie haute de l'image.
Cette opération permet de changer la largeur ou la hauteur de l'image pour qu'elle tienne dans la taille choisie avec le curseur.
Nous suivons cet algorithme.
Choix d'implémentation :
- Pour le Seam Carving suivant la largeur, les bandelettes verticales sont détruites une par une pour éviter des erreurs de suppression.
- Pour le Seam Carving suivant la hauteur (extension), les bandelettes horizontales sont détruites une par une pour éviter des erreurs de suppression.
Cette opération permet d'écrire sur le disque le fichier actuellement ouvert.
Choix d'implémentation :
- Ajout d'un chemin par défaut contenant plusieurs images d'exemple.
- Limitation aux fichiers image de type JPEG.
Mode d'emploi : Au clavier Ctrl + S
ou à partir du menu File > Save.
Fonctionnalité : permet d'enregistrer les modifications sur image depuis le dernier enregistrement (checkpoint).
Mode d'emploi : Au clavier Ctrl + V
ou à partir du menu Changes > Create checkpoint.
Mis en oeuvre car il n'enregistre que les modifications, il ne crée pas pour autant un fichier image au même titre que Save.
Fontionalité : permet d'annuler les modifications effectuées depuis le dernier checkpoint
Mode d'emploi : Au clavier Ctrl + Shift + V
pour revenir au dernier enregistrement (checkpoint) ou à partir du menu Edit > Cancel changes since checkpoint.
Mis en oeuvre pour permettre à l'utilisateur de revenir en arrière pour éviter d'enchainer les changements innoportuns.
Fonctionnalité : Permet de zoomer sur l'image de manière intuitive par un clic de souris.
Mode d'emploi :
- Sélectionner la fonction Zoom en appuyant sur le bouton Zoom (option par défaut au lancement)
- Ajuster le curseur pour définir le facteur de zoom
- Cliquer sur l'image pour définir le centre de zoom
Implémenté pour permettre à l'utilisateur d'obtenir directement une sous image de manière très précise dans l'image. La valeur du curseur est utilisée pour définir le facteur de zoom.
Fonctionnalité :
- Gradients : permet d'afficher le gradient RVB de la couleur de votre choix.
- Energie et Seam : permet d'afficher le résultat du calcul d'énergie sur l'image, ainsi que la bandelette d'énergie minimale.
Mode d'emploi : Survoler la surface associée.
- Gradients : un des carrés de couleur pour le gradient de la couleur correspondante.
- Energie et Seam : le Label d'énergie ou le label de l'énergie et du seam d'énergie minimale.
Mis en oeuvre pour proposer à l'utilisateur une nouvelle façon de faire un choix, différente des boutons "classiques", ils permettent de faire un changement temporaire, juste un affichage temporaire du résulat de l'opération souhaitée. Le résultat est à titre informatif pour permettre à l'utilisateur de faire ses futurs choix d'opération.
Fonctionnalité : Choisir si l'utilisateur souhaite effectuer les traitements d'image selon la hauteur ou la largeur.
Mode d'emploi : Au clavier Ctrl + D
ou à partir du menu Edit > Switch direction.
Implémenté pour fournir à l'utilisateur un degré de liberté supérieur dans la modification de l'image en cours de modification.
Fonctionnalité : Permet de renforcer ou réduire l'intensité d'une des trois couleurs R/V/B.
Mode d'emploi : Utiliser le curseur associé à la couleur à modifier. La modification se fait dynamiquement.
Cette utilisation des Listeners permet à l'utilisateur de modifier intrinsèquement son image avant de faire des retouches de redimensionnement.
Fonctionnalité : Permet d'activer rapidement les fonctionnalités implémentées.
Mode d'emploi : Appui simultané des touches de clavier.
Liste des raccourcis au paragraphe [Interface utilisteur](#Raccourcis clavier).
Permet d'améliorer l'interface en relayant certaines fonctions dans le menu, sans pour autant sacrifier l'expérience utilisateur.
Fonctionnalité : Permet une visualisation directe des caractéristiques de l'outil. Améliore l'expérience utilisateur.
Liste des informations concernées au paragraphe Interface utilisteur.
Mode d'emploi :
- Position du pointeur : Déplacer le curseur sur l'image affichée. L'affichage se fait dans la barre d'état.
- Autres informations : lecture de l'affichage dans la barre d'état.
- Bandeau supérieur : barre de menu.
- Bandeau inférieur : barre d'état.
- Bandeau latéral gauche : commandes et affichages.
- Traitement en cours : cropping | resizing | seam carving
- Direction : horizontal | vertical
- Position du pointeur : x pixels à partir de la gauche, y pixels à partir du haut
- Ctrl+O Ouverture (Open) d'un fichier image.
- Ctrl + D Modification du sens (Direction) des traitements sur image.
- Ctrl + V Persistance des modifications réalisées (Save checkpoint).
- Ctrl + Shift + V Annualation (Cancel) des modifications effectués depuis le dernier checkpoint
- Ctrl + S Enregistrement (Save) des modifications en fichier image.
- F1
Ouverture du fichier d'aide.
Permet d'accéder directement au fichier README.md pour comprendre les fonctionnalités.
Mode d'emploi : Au clavier F1
ou à partir du menu Help.
Les traitements ont été réalisés selon la direction horizontale.
Image d'origine
Image après recadrage (Crop)
Image après mise à l'échelle (Resize)
Image après suppression de bandelettes (Carve seams)