2017-02-08 8 views
-2

J'essaie d'enregistrer l'image dans un format sélectionné par l'utilisateur à partir de FileChooser SaveDialog. Voici mon code:Comment enregistrer une image dans un format sélectionné par l'utilisateur en utilisant FileChooser dans javaFx?

java docs says the same thing for both get and set methods Je ne comprends pas.

File f1 = new File("C:\\Users\\KIRAN\\Desktop\\Andromeda1.png"); 

    FileChooser stegoImageSaver = new FileChooser(); 
    stegoImageSaver.setTitle("Save Image File"); 
    stegoImageSaver.setInitialDirectory(new File("C:\\")); 
    stegoImageSaver.getExtensionFilters().addAll(
     new FileChooser.ExtensionFilter("PNG Files", "*.png"), 
     new FileChooser.ExtensionFilter("BMP Files", "*.bmp"), 
     new FileChooser.ExtensionFilter("GIF Files", "*.gif")); 
    File f1 = stegoImageSaver.showSaveDialog(null); 

    ImageIO.write(img, "png", f1); 

Ce que j'ai besoin est d'obtenir l'extension de l'utilisateur de la « boîte de dialogue Enregistrer filechooser » et écrire l'image avec cette extension.

Je ne sais pas comment utiliser obtenir & définir des méthodes d'extension dans Filechooser dans javaFx et n'a pas pu trouver la mise en œuvre pratique.

Voir ma dernière ligne de code: Je veux savoir comment changer le "png" en n'importe quelle extension sélectionnée par l'utilisateur à partir de la "boîte de dialogue de sauvegarde de fichier".

Merci d'avance.

+2

Vous pouvez vérifier avec 'getSelectedExtensionFilter' quelle extension l'utilisateur choosed. Alternativement, vous pouvez vérifier le nom du fichier. – IQV

+0

Cet exemple devrait vous donner une idée des étapes nécessaires pour compléter ceci. Je pense que vous aviez besoin d'une méthode pour convertir le fichier au bon format en fonction de l'extension choisie. http://java-buddy.blogspot.com/2012/05/save-file-with-javafx-filechooser.html – Sedrick

+0

@IQV pouvez-vous me donner un petit exemple de mise en œuvre de celui-ci. – KalyanamKiran

Répondre

0

Le filtre d'extension sélectionné est uniquement ce que l'utilisateur sélectionne dans la zone de liste déroulante (ou similaire) de la boîte de dialogue. Cela peut correspondre ou non à l'extension réelle du fichier. Par exemple. Avec Windows, vous pouvez sélectionner le filtre png, mais utiliser le clavier pour entrer xyz.gif.

Vous devriez obtenir la terminaison du fichier renvoyé de showSaveDialog:

File f1 = stegoImageSaver.showSaveDialog(null); 
if (f1 != null) { 
    String name = f1.getName(); 
    String extension = name.substring(1+name.lastIndexOf(".")).toLowerCase(); 
    ImageIO.write(img, extension, f1); 
}