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

avec Java Discussion :

Découper un lot d'images jpeg


Sujet :

avec Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 176
    Points : 198
    Points
    198
    Par défaut Découper un lot d'images jpeg
    Bonjour j'essayes de decouper une serie d'images jpeg avec le programme ci dessous

    Le problème que je rencontre est qu'après éxécution, mon programme, lève une exception : unsupported image type....
    Puis dans mon dossier de destination une seule partie de ma liste d'images originale est découpée.

    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
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Arrays;
     
    import javax.imageio.ImageIO;
     
    public class ImageCut 
    {
     
    	public static void main(String[] args) throws IOException 
    	{		
    		MyComparator comparator = new MyComparator();
    		BufferedImage image;
    		String source = "images/anciennesImages/";
     
    		File file = new File(source);
     
    		// Je cree un tableau avec les element de mon dossier "file"
    		File[] imageList = file.listFiles();
     
                    // Je trie les noms des images dans l'ordre alpha
    		Arrays.sort(imageList, comparator);
     
    		//Boucle pour passer chaque element de mon tableau et de le traiter
    		for ( File f : imageList)
    		{               
                                    // je charge chaque image
    				FileInputStream input = new FileInputStream(f.getPath());
    				image = ImageIO.read(input);
     
                                    // je recupere une vue de la zone d'image m'interressant
    				image = image.getSubimage(0, 0, image.getWidth(), image.getHeight()/2);
     
                                    // je cree une nouvelle image au format jpeg dans le nouveau dossier
    				ImageIO.write(image, "jpg", new File("/images/nouvellesImages/"+f.getName()));;
    		}
     
    	}
    }
    Je ne comprends pas pourquoi seulement certaines images sont traitées alors qu'elles sont toutes du même format ( jpeg).
    Si quelqu'un peut m'aider a comprendre ce qui ne va pas.
    Merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je dirais que tu as d'autres fichiers dans ton dossier : tu peux le vérifier en ajoutant un System.out.println(f) au début du block du for. Soit tu filtres listFiles(), avec FileFilter par exemple, ou FilenameFilter. Soit tu testes l'extension dans la boucle.

    Par ailleurs, tu devrais fermer ton FileInputStream... ou alors utilise ImageIO.read(File).

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 176
    Points : 198
    Points
    198
    Par défaut
    J'ai tester dans ma boucle for l'extension de chaque fichier, et c'est un petit dossier 68 fichiers j'ai bien vérifié (voir code ci dessous).


    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
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Arrays;
     
    import javax.imageio.ImageIO;
     
     
    public class ImageCut {
     
    	public static void main(String[] args) throws IOException {
     
    		BufferedImage image;
    		String source = "images/DOCUMENTS JPG SOURCES MONTESSORI/MONTESSORI lieux/lieux/";
    		File file = new File(source);
    		MyComparator comparator = new MyComparator();
    		File[] imageList = file.listFiles();
     
    		// Classe les fichiers dans l'ordre alpha
    		Arrays.sort(imageList, comparator);
     
    		// boucle permettant de traiter les fichier un a un
    		for ( File f : imageList)
    		{
    			// ecrit en console  le chemin et le nom du fichier concerne
    			System.out.println(f);
     
    			// si le nom a l'extension ".jpg" alors : le traiter
    			if(f.getName().endsWith(".jpg"))
    			{	
     
    				image = ImageIO.read(f.getCanonicalFile());
    				image = image.getSubimage(0, 0, image.getWidth(), image.getHeight()/2);
    				ImageIO.write(image, "jpg", new File("/home/abysr/destination/lieux/"+f.getName()));;
     
    			}
     
    			//Sinon ecrire son chemin, nom et extensions
    			else System.out.println(f);
    		}
     
    	}
    }
    et je recois cette erreur:

    images/DOCUMENTS JPG SOURCES MONTESSORI/MONTESSORI lieux/lieux/00 premiere page.jpg
    images/DOCUMENTS JPG SOURCES MONTESSORI/MONTESSORI lieux/lieux/01 page du theme lieux arabe.jpg
    images/DOCUMENTS JPG SOURCES MONTESSORI/MONTESSORI lieux/lieux/02 lexique premiere partie.jpg
    images/DOCUMENTS JPG SOURCES MONTESSORI/MONTESSORI lieux/lieux/03 lexique deuxieme partie.jpg
    images/DOCUMENTS JPG SOURCES MONTESSORI/MONTESSORI lieux/lieux/04 maison singulier.jpg
    Exception in thread "main" javax.imageio.IIOException: Unsupported Image Type
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1068)
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1039)
    at javax.imageio.ImageIO.read(ImageIO.java:1448)
    at javax.imageio.ImageIO.read(ImageIO.java:1308)
    at ImageCut.main(ImageCut.java:30)


    Je comprends pas ou est mon erreur tous mes fichiers sont des images et sont en .jpg,
    Si quelqu'un a une idée ou besoin d'une autre info afin de m'aider...

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Hum. Vu la stacktrace il semble que tu sois dans un cas assez compliqué. Si j'ai raison on ne peut pas dire que l'erreur vienne de toi.

    En principe on a cette erreur-là quand on essaie de lire un fichier JPEG possiblement correct, mais qui n'est pas géré par la bibli Java de base.
    Par exemple les JPEG en CMYK, ils ne sont pas gérés sans ajouter une meilleure bibliothèque JPEG que celle fournie de base.

    Il y a peut-être un truc "bizarre" avec ce fichier "04 maison singulier.jpg", je te suggère de l'étudier plus en détails.

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 176
    Points : 198
    Points
    198
    Par défaut
    Après enquète... certaines images ont été retouché. le mode était RVB je l'ai passé en "Couleurs indexées" avec GIMP et c'est ok!
    je n'ai plus d'erreur, Merci!

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/07/2014, 15h34
  2. [DBase][BDE]Insérer des images JPeg dans un table.u
    Par migauvin dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/08/2004, 13h03
  3. Compression d'une série d'images jpeg
    Par Tchello dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2003, 20h59
  4. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 15h51
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 21h06

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