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

2D Java Discussion :

Application Swing -> ImageIO


Sujet :

2D Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Par défaut Application Swing -> ImageIO
    Bonjour à tous,

    j'ai développer une petite application Swing qui permet de transformer des fichier DICOM en image JPEG. Cette application fonctionne très bien quand je suis dans mon IDE. j'ai généré un jar de cette application et là ça ne fonctionne plus.

    En regardant un peu de plus près, j'ai remarquer qu'il "bloquait" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Iterator iterator = ImageIO.getImageReadersByFormatName("DICOM");
    .

    Voici la classe entière :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    public static DicomInfo extractDicomData(File file, File tempDirectory) {
        LogFile.getInstance().log("info", "start extractDicomData method");
        DicomInfo dicomInfo = new DicomInfo();
        try {
          BufferedImage image = null;
          LogFile.getInstance().log("info", "BufferedImage image = null;");
          ImageIO.scanForPlugins();
          LogFile.getInstance().log("info", " ImageIO.scanForPlugins();");
          Iterator iterator = ImageIO.getImageReadersByFormatName("DICOM");
          LogFile.getInstance().log("info", "ImageIO.getImageReadersByFormatName(\"DICOM\");");
          ImageReader reader = (ImageReader) iterator.next();
          DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();
          LogFile.getInstance().log("info", " DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();");
          ImageInputStream iis = ImageIO.createImageInputStream(file);
          reader.setInput(iis, false);
          LogFile.getInstance().log("info", "reader.setInput(iis, false);");
          image = reader.read(0, param);
          iis.close();
     
          if (image == null) {
            LogFile.getInstance().log("error", "couln't read dicom image!");
            return null;
          }
     
          File jpegFile = File.createTempFile("dicom", ".jpg", tempDirectory);
          LogFile.getInstance().log("info", "Temp file : " + jpegFile.getAbsolutePath());
          OutputStream output = new BufferedOutputStream(new FileOutputStream(jpegFile));
     
          ImageWriter writer = null;
          Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
          writer = (ImageWriter) iter.next();
          ImageOutputStream ios = ImageIO.createImageOutputStream(output);
          writer.setOutput(ios);
          ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
          iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
          iwparam.setCompressionQuality(Float.parseFloat(PropertiesCache.getInstance().getProperty("CompressionQuality")));
          writer.write(null, new IIOImage(image, null, null), iwparam);
          ios.flush();
          writer.dispose();
          ios.close();
          output.close();
          dicomInfo.setImage(jpegFile);
          dicomInfo.setSourcePath(file);
        } catch (Exception ex) {
          LogFile.getInstance().log("error", "No image available in this dicom file " + file.getName());
          LogFile.getInstance().log("Exception", ex.getMessage());
          return null;
        }
     
        try {
          DicomInputStream dicomInputStream = new DicomInputStream(file);
          DicomObject object = dicomInputStream.readDicomObject();
          dicomInfo.setStudyDate((Date) getMetaData(object, "Study Date", Types.DATE));
          dicomInfo.setStudyDescription((String) getMetaData(object, "Study Description", Types.VARCHAR));
          dicomInfo.setPatientName((String) getMetaData(object, "Patient’s Name", Types.VARCHAR));
          dicomInfo.setPatientId((Long) getMetaData(object, "Patient ID", Types.BIGINT));
          dicomInfo.setPatientBirthdate((Date) getMetaData(object, "Patient’s Birth Date", Types.DATE));
          dicomInfo.setPatientSex((String) getMetaData(object, "Patient’s Sex", Types.VARCHAR));
        } catch (IOException ex) {
          LogFile.getInstance().log("error", "unable to get METADATA");
          LogFile.getInstance().log("Exception", ex.getMessage());
        }
     
        return dicomInfo;
      }
    Comme vous pouvez le voir, j'ai ajouter des logs pour voir jusqu’où il va et c'est là que j'ai vu que dès que j'utilise ImageIO, il ne va pas plus loin.

    J'ai également regarder avec ceci ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -verbose -jar dicomUpload.jar
    et voici ce que ça donne (cf pièce jointe) et là je vois des messages d'erreur comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Loaded java.lang.ClassNotFoundException from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.LinkageError from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.NoClassDefFoundError from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.ClassCastException from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.ArrayStoreException from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.VirtualMachineError from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.OutOfMemoryError from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    [Loaded java.lang.StackOverflowError from C:\Program Files\Java\jre1.8.0_77\lib\rt.jar]
    est-ce que quelqu'un a une idée de l'origine du problème ? car ça fait des heures que je suis dessus sans succès.

    Merci d'avance pour vos réponses
    Fichiers attachés Fichiers attachés
    • Type de fichier : 7z log.7z (18,5 Ko, 53 affichages)

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

Discussions similaires

  1. Java intégration browser web dans une application swing ....
    Par Manu35 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 23/03/2006, 08h47
  2. Réponses: 10
    Dernier message: 16/03/2006, 11h31
  3. [Stratégie] Mise à jour application SWING
    Par chr_one dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 26/08/2005, 15h31
  4. [Info][Ecran Tactile]Application Swing
    Par Rampa dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 12/07/2005, 10h09
  5. [JDBC][ARCHITECTURE] application swing
    Par benssj5 dans le forum JDBC
    Réponses: 6
    Dernier message: 31/08/2004, 19h25

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