IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[Jnlp] Problème avec FileSaveService et une BufferedImage


Sujet :

Java

  1. #1
    Membre du Club Avatar de Frac10
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut [Jnlp] Problème avec FileSaveService et une BufferedImage
    Tout d'abord, bonjour tout le monde !
    Je ne sais pas si ce message est à sa place, mais j'espère que c'est le bon forum...

    Donc voilà, je fais un ScreenShot de mon Canvas3D que je mets ensuite dans une BufferedImage comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BufferedImage bi = screenShot.doRender(width, height);
    Donc mon problème, c'est qu'ensuite je voudrais ouvrir une boîte de dialogue afin de permettre à l'utilisateur d'enregistrer cette image sur son disque dur (via un FileSaveService qui est présent dans le jnlp.jar), mais je ne sais pas comment passer la BufferedImage créée auparavant en paramètre (qu'est-ce que je dois mettre à la place des points d'interrogation ?)...

    Voilà le code que j'utilise pour sauver le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    FileSaveService fss;
    String [] extensions = { "jpg", "jpeg" };
    try {
    	fss = (FileSaveService)ServiceManager.lookup("javax.jnlp.FileSaveService");
    } catch (UnavailableServiceException e) {
    	fss = null;
    	System.out.println(e);
    }
     
    if (fss != null) {
    	try {
    		FileContents newfc = fss.saveFileDialog(null, extensions, ?????, null);
    	} catch (Exception e) {
    		e.printStackTrace();
    		JOptionPane.showMessageDialog(frame, "Error " + e.getLocalizedMessage() + " occured when writing the file ", "Writing Error", JOptionPane.ERROR_MESSAGE);
    	}
    }
    Merci d'avance !!!

  2. #2
    Membre du Club Avatar de Frac10
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Heu je vais essayer d'être plus clair...

    Voilà en fait dans la méthode saveFileDialog(java.lang.String pathHint, java.lang.String[] extensions, java.io.InputStream stream, java.lang.String name),
    de la classe FileSaveService, comment fait-on pour passer une image (genre une BufferedImage) en InputStream et est-ce que c'est possible

    Voilà j'espère que c'est plus clair...
    Merci d'avance pour vos réponses !

  3. #3
    Membre du Club Avatar de Frac10
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Personne n'aurait le commencement d'un début de piste ???

    Est-ce possible au moins d'enregistrer autre chose qu'un fichier texte par cette méthode ?

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Frac10
    Est-ce possible au moins d'enregistrer autre chose qu'un fichier texte par cette méthode ?
    Un InputStream ne représente pas seulement un fichier texte, mais n'importe quel fichier binaire !!!

    La solution la plus simple serait de passer par des ByteArray :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            BufferedImage image = ...;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(image, "jpeg", baos);
     
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            FileContents newfc = fss.saveFileDialog(null, extensions, bais, null);
    L'incoviénient c'est que cela fait une copie de l'image en mémoire, et qu'il est donc peut être préférable d'utiliser des PipedStream avec dexu threads en parallèle...

    a++

  5. #5
    Membre du Club Avatar de Frac10
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Ok merci, çà marche nickel !
    Le pire c'est qu'avant d'utiliser Java Web Start, j'avais utiliser la fonction ImageIO.write, mais je croyais qu'en fait çà enregistrer directement l'image sur le disque dur et non pas en mémoire : je pensais qu'il y aurait eu une erreur de sécurité...

    Merci beaucoup !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50
  2. FAQ : problème avec création d'une requete en VBA
    Par Oluha dans le forum VBA Access
    Réponses: 14
    Dernier message: 14/02/2006, 12h05
  3. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  4. Problème avec affichage d'une table modifiée
    Par auriolbeach dans le forum Access
    Réponses: 6
    Dernier message: 31/10/2005, 15h45
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo