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

Graphisme Java Discussion :

Créer une image à partir d'un tableau (int[][]) de pixel


Sujet :

Graphisme Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Créer une image à partir d'un tableau (int[][]) de pixel
    Bonjour à tous !

    Voilà, je suis actuellement sur un projet.

    Je m'explique : Je dois faire en sorte de pouvoir obtenir la matrice d'une image en noir et blanc d'une certaine manière, ce que j'ai fais, j'ai donc réussi à faire mon tableau de pixel en stockant pour chaque la valeur R de RGB (sachant que pour une image en noir et blanc (R = G = B).

    Là où je suis un bloqué : Il faudrait maintenant que je puisse à partir d'un tableau de pixel, comme celui créé juste avant, afficher/creer une image.
    J'ai fais des recherches sur internet, je continue à en faire mais je ne trouve pas mon bonheur... Je demande donc votre aide tout en espérant que je trouve moi même la solution !

    Je vous remercie !

    Cordialement.

  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 : 54
    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,

    Tu peux faire ça avec la classe BufferedImage. Tu crées une instance à la taille qu'il te faut et du type qui correspond à ton tableau (si c'est du RGB, BufferedImage.TYPE_RGB, ou ARGB si c'est transparent, ou GRAY pour du niveau de gris, etc... voir la javadoc de la classe pour tous les types possibles). Ensuite tu récupères un WritableRaster par getRaster() et setPixels(...) pour y mettre un tableau de pixels (en revanche, il doit être à une dimension, il faudra donc convertir ton tableau 2D).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Je te remercie de ta réponse, je vais essayer ca au plus vite dans la journée !!! Juste une question, ca ne posera aucun problème que mon tableau ne contient que la valeur r de chaque pixel ? (en sachant, je le rappelle, que pour mon cas chaque pixel a R=G=B)

    Encore merci de ta réponse !

    Cordialement

  4. #4
    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 : 54
    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
    En fait ça dépend du type d'image : en BYTE_GRAY oui, en RGB, il va falloir mettre B=V=R, en ARGB, il faudra ajouter l'alpha (255 si toute l'image est opaque par exemple).

    POC :

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    public class DemoImage {
     
    	public static final int WIDTH = 100;
    	public static final int OFFSET = 10;
    	private static final int IWIDTH = ((WIDTH/2)-OFFSET);
    	private static final int INB = IWIDTH*IWIDTH;
     
    	public static void main(String[] args) {
     
    		final int[][] array = create();
     
    		final BufferedImage[] images = {
    				createImage(array,convertToRGB(array), BufferedImage.TYPE_INT_RGB),
    				createImage(array,convertToARGB(array), BufferedImage.TYPE_INT_ARGB),
    				createImage(array,convertToGray(array), BufferedImage.TYPE_BYTE_GRAY)
    		};
     
    		final JPanel panel = new JPanel();
    		panel.setBackground(Color.YELLOW);
    		for(final BufferedImage image : images) {
    			panel.add(new JLabel(new ImageIcon(image)));
    		}
     
    		JOptionPane.showMessageDialog(null, panel);
     
    	}
     
    	private static BufferedImage createImage(final int[][] array, final int[] pixelArray, final int type) {  
    		final BufferedImage image = new BufferedImage(array[0].length, array.length, type);
    		final WritableRaster raster = image.getRaster();
    		raster.setPixels(0, 0, array[0].length, array.length, pixelArray);  
    		return image;
    	}
     
    	private static int[] convertToRGB(final int[][] array) {
    		final int[] pixelArray = new int[array.length*array[0].length*3];
    		for(int i=0; i<pixelArray.length; i+=3) {
    			final int r = array[(i/3)/array[0].length][(i/3)%array[0].length];
    			pixelArray[i] = r;
    			pixelArray[i+1] = r;
    			pixelArray[i+2] = r;
    		}
    		return pixelArray;
    	}
    	private static int[] convertToARGB(int[][] array) {
    		final int[] pixelArray = new int[array.length*array[0].length*4];
    		for(int i=0; i<pixelArray.length; i+=4) {
    			int x=(i/4)%array[0].length;
    			int y=(i/4)/array[0].length;
    			final int r = array[y][x];
    			pixelArray[i] = r;
    			pixelArray[i+1] = r;
    			pixelArray[i+2] = r;
    			pixelArray[i+3] = (x>=OFFSET&&x<WIDTH-OFFSET&&y>=OFFSET&&y<WIDTH-OFFSET)?255:0; // alpha 
    		}
    		return pixelArray;
    	}
    	private static int[] convertToGray(int[][] array) {
    		final int[] pixelArray = new int[array.length*array[0].length];
    		for(int i=0; i<pixelArray.length; i++) {
    			final int r = array[i/array[0].length][i%array[0].length];
    			pixelArray[i] = r;
    		} 
    		return pixelArray;
    	}
    	private static int[][] create() {
     
    		final int[][] array = new int[WIDTH][WIDTH];
     
    		for(int i = OFFSET, r=0; i< WIDTH/2; i++) {
    			for(int j = OFFSET; j< WIDTH/2; j++) {
    				array[i][j]=
    				array[j][i]=
    				array[99-i][j]=
    				array[99-j][i]=
    				array[i][99-j]=
    				array[j][99-i]=
    				array[99-i][99-j]=
    				array[99-j][99-i]=(int)(r*255.0/INB);
    				r++;
    			}
    		}
    		return array;
     
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour tes réponses !

    Alors je viens d'essayer et j'ai un message d'erreur, voici le bout de mon code ainsi que le message d'erreur, je précise une chose, le petitre traitement que je fais au début de ma première fonction sur chaque pixel, c'est parce que notre sujet veut que notre pixel soit de 0 à 100 (0 pour blanc, 100 pour noir), de plus 255 pour r, g et b donne blanc et non noir donc j'avais fais une petite conversion pour pouvoir afficher vraiment comme nous demande le sujet donc ne fait pas attention à ce traitement, c'est juste pour remettre chaque pixel comme il faut par rapport à 255 !

    Je m'excuse d'avance si tu trouves mon code horrible et les nomages pas terrible, j'ai fais ca assez vite afin de pouvoir essayer.

    [EDIT] Bien entendu, j'appelle la fonction creerImageMatriceContraste en lui passant mon tableau en paramètre, de ce côté tout va bien normalement.

    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
    public static void creerImageMatriceContraste(int[][] matriceContraste) {
     
    			int[][] array = matriceContraste;
     
     
    			for (int j=0; j<nb_colonne;j++) {
     
    				for (int i=0; i<nb_ligne; i++) {
     
    					float surcent = ((float)(array[i][j]) / 100) * 255;
    					int pix = (int)(255 - surcent);
     
    					array[i][j] = pix;
     
    				}
     
    			}
     
    			BufferedImage image = createImage(array,convertToRGB(array), BufferedImage.TYPE_INT_RGB);	
     
    			Image newimg = image.getScaledInstance(120, 120, java.awt.Image.SCALE_SMOOTH);
    			image = (BufferedImage) newimg;
     
    			labelContraste.setIcon(new ImageIcon(image));
     
    		}
     
    		public static BufferedImage createImage(final int[][] array, final int[] pixelArray, final int type) {  
    				final BufferedImage image = new BufferedImage(array[0].length, array.length, type);
    				final WritableRaster raster = image.getRaster();
    				raster.setPixels(0, 0, array[0].length, array.length, pixelArray);  
    				return image;
    		}
     
    		public static int[] convertToRGB(final int[][] array) {
    				final int[] pixelArray = new int[array.length*array[0].length*3];
    				for(int i=0; i<pixelArray.length; i+=3) {
    					final int r = array[(i/3)/array[0].length][(i/3)%array[0].length];
    					pixelArray[i] = r;
    					pixelArray[i+1] = r;
    					pixelArray[i+2] = r;
    				}
    				return pixelArray;
    		}

    Et voici le message d'erreur en entier :

    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
    at AppliGraphique.creerImageMatriceContraste(AppliGraphique.java:389)
    at AppliGraphique.contraste(AppliGraphique.java:358)
    at AppliGraphique$4.actionPerformed(AppliGraphique.java:198)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)


    Encore merci !

    Cordialement.

  6. #6
    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 : 54
    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
    Le problème vient de image = (BufferedImage)newimg dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BufferedImage image = createImage(array,convertToRGB(array), BufferedImage.TYPE_INT_RGB);	
     
    			Image newimg = image.getScaledInstance(120, 120, java.awt.Image.SCALE_SMOOTH);
    			image = (BufferedImage) newimg;
     
    			labelContraste.setIcon(new ImageIcon(image));
    Parce qu'un Image ne peut être casté vers un BufferedImage (l'inverse oui).

    Soit tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BufferedImage image = createImage(array,convertToRGB(array), BufferedImage.TYPE_INT_RGB);	
     
    			Image newimg = image.getScaledInstance(120, 120, java.awt.Image.SCALE_SMOOTH); 
     
    			labelContraste.setIcon(new ImageIcon(newimg ));
    Soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Image image = createImage(array,convertToRGB(array), BufferedImage.TYPE_INT_RGB);	
     
    			image = image.getScaledInstance(120, 120, java.awt.Image.SCALE_SMOOTH); 
     
    			labelContraste.setIcon(new ImageIcon(image));
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Ouah super ! Ca marche !

    Juste une petite chose, L'image qu'il me fait n'est pas dans le bon sens, j'entend par là que pour etre dans le bon sens il faudrait lui faire un 90° vers la droite, puis un inversement miroir mais je pense que c'est dans une de tes deux fonctions qu'il faudrait que je modifie un peu pour ca créé l'image en prenant les valeurs dans le bon sens !

    Merci beaucoup pour ton aide et toutes ces réponses !

    Cordialement.

  8. #8
    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 : 54
    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
    Citation Envoyé par Serialchaos Voir le message
    Ouah super ! Ca marche !

    Juste une petite chose, L'image qu'il me fait n'est pas dans le bon sens, j'entend par là que pour etre dans le bon sens il faudrait lui faire un 90° vers la droite, puis un inversement miroir mais je pense que c'est dans une de tes deux fonctions qu'il faudrait que je modifie un peu pour ca créé l'image en prenant les valeurs dans le bon sens !
    C'est dû à une inversion ligne/colonne.

    Inverse / et % : modifie final int r = array[(i/3)/array[0].length][(i/3)%array[0].length]; par final int r = array[(i/3)%array[0].length][(i/3)/array[0].length];.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    J'ai inversé et ca me met une erreur :

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3
    at AppliGraphique.convertToRGB(AppliGraphique.java:404)
    at AppliGraphique.creerImageMatriceContraste(AppliGraphique.java:386)
    at AppliGraphique.contraste(AppliGraphique.java:358)
    at AppliGraphique$4.actionPerformed(AppliGraphique.java:198)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  10. #10
    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 : 54
    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
    Ah oui, j'ai réfléchis un peu trop vite : il faudrait tout inverser, surtout si l'image n'est pas carrée. Remets comme c'était, et fabrique ton tableau pour que ce soit bien une tableau de lignes (la première coordonnée sont les lignes, la seconde les colonnes).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Ah oui, j'ai réfléchis un peu trop vite : il faudrait tout inverser, surtout si l'image n'est pas carrée. Remets comme c'était, et fabrique ton tableau pour que ce soit bien une tableau de lignes (la première coordonnée sont les lignes, la seconde les colonnes).
    Tu parles de modifier la ligne que j'ai mise en rouge ?
    Car en ce qu'il s'agit de la définition du tableau pixelArray que tu m'as donnés, moi elle me parait correcte ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private static int[] convertToRGB(final int[][] array) {
    		final int[] pixelArray = new int[array.length*array[0].length*3];
    		for(int i=0; i<pixelArray.length; i+=3) {
    			final int r = array[(i/3)/array[0].length][(i/3)%array[0].length];
    			pixelArray[i] = r;
    			pixelArray[i+1] = r;
    			pixelArray[i+2] = r;
    		}
    		return pixelArray;
    	}

  12. #12
    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 : 54
    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
    Oui je parlais bien de cette ligne.

    Lorsqu'on veut passer de coordonnées dans une matrice largeur × hauteur, à un tableau à plat, de taille largeur × hauteur donc, et inversement, on utilise les fonctions de conversions suivante :

    • index = y × largeur + x (avec x un index de colonne, y un index de ligne)
    • x = index % largeur
      y = index / largeur


    Une matrice réprésentée par un int[][], constituée de lignes, constiuées elle-même de colonnes est telle que, dans l'expression int[i][j], i représente une ligne, donc correspond au y, et j une colonne dans la ligne, donc correspond au x.
    Si ta matrice, et ta création de tableau ont été basé sur un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0; i< LARGEUR; i++) {
        for(int j=0; j< HAUTEUR; j++ ) {
        }
    }
    il y a donc inversion (ici i c'est x, et j c'est y).

    Tu peux générer donc ton tableau pour que ça soit des lignes de colonnes (et non des colonnes de lignes), ou alors faire une fonction de transposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     private static int[][] transpose(int[][] array) {
    		int[][] newArray = new int[array[0].length][array.length];
    		for(int i=0; i<array.length; i++) {
    			for(int j=0; j<array[i].length; j++) {
    				newArray[j][i]=array[i][j];
    			}
    		}
    		return newArray;
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci pour tes explications.
    Je pensais avoir compris, mais l'image que ca me donne est parti en cacahuète, du coup j'ai essayé avec ta fonction mais même chose, les pixels pas au bonne endroit :S
    Pour le moment j'suis pas trop débrouillard, la fatigue peut-être :/

    EDIT : Alors petit détail ... j'ai le problème avec mon image 4x3 (l'image du sujet) alors qu'avec une image 20x20 cela marche très bien :/

  14. #14
    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 : 54
    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
    On peut la voir l'image (celle de base et la scaled) ?
    Parce que une image 4 × 3 pixels agrandie à 120 × 120 risque fortement d'être "déformée" par l'algorithme d’agrandissement et c'est normal (pour éviter d'avoir d'énormes pixels), sans parler de la déformation dû à l'étirement (ou la compression, je ne sais pas quel est le choix de l'algorithme).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    On peut la voir l'image (celle de base et la scaled) ?
    Parce que une image 4 × 3 pixels agrandie à 120 × 120 risque fortement d'être "déformée" par l'algorithme d’agrandissement et c'est normal (pour éviter d'avoir d'énormes pixels), sans parler de la déformation dû à l'étirement (ou la compression, je ne sais pas quel est le choix de l'algorithme).
    Alors de base sur mon appli j'affiche l'image de base que je vais chercher sur mon ordi, bref, que j'aggrandis (la, pas de soucis, ni pour 4x3 ni pour la 20x20) ensuite je fais la matrice de cette image puis de cette matrice je fais une matrice contraste etc... et j'affiche l'image qui découle de la matrice contraste et c'est la que la 4x3 ne marche pas alors que la 20x20 oui et je ne sais pas vraiment que l'étirement joue la dessus car pour la celle de base ca marchai très bien :/ En plus avant que tu m'expliques comment transposer ma matrice avant de faire l'image, l'image s'affichai bien mais pas dans le bon sens.

    Voici les images (a gauche, celle de base, et a droite, celle que je créé moi meme et que donc je réaffiche là) :

    L'image 4x3
    Nom : Sans titre1.jpg
Affichages : 3028
Taille : 6,5 Ko

    L'image 20x20 qui marche correctement
    Nom : Sans titre.png
Affichages : 3005
Taille : 3,0 Ko

    J'ai l'impression que du fait qu'il n'y ai pas le même nombre de ligne que de colonne, il s'embrouille où je ne sais quoi :/

  16. #16
    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 : 54
    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
    Celle d'en haut à droite, elle est transposée là ou pas (passée dans la méthode transpose()) ? Si oui, alors il ne faut pas et ce n'est pas le problème.
    Quelle est l'image que tu dois obtenir, et l'image que tu obtiens ? C'est quoi au juste l'image en haut à gauche, que tu appelle de base ? Tu la génères ou elle existe ?
    Ensuite, il me faudrait voir le code qui produit l'image.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Celle d'en haut à droite, elle est transposée là ou pas (passée dans la méthode transpose()) ? Si oui, alors il ne faut pas et ce n'est pas le problème.
    Quelle est l'image que tu dois obtenir, et l'image que tu obtiens ? C'est quoi au juste l'image en haut à gauche, que tu appelle de base ? Tu la génères ou elle existe ?
    Ensuite, il me faudrait voir le code qui produit l'image.
    Oui elle est transposé car sinon ca me donnait bien l'image contrasté, mis a part qu'elle était en mode 90° vers la gauche et inversé (miroir) donc tu m'as donné la méthode transpose et avec ca me donne l'image en haut à droite. L'image en haut à gauche, c'est une image qui provient de mon pc, déja faite, un ficher jpg, et c'est à partir du tableau que j'obtient de cette image de base que je fais le tableau de contraste et donc ce que je dois obtenir en haut à droite c'est l'image de gauche mis à part que certains pixels se seront foncé et d'autre éclaircis, la on peut voir les pixels qui ont bien changé mais ils ont juste pas le bon emplacement.

    Pour te montrer sans transposé j'obtiens du coup en image contraste cela :
    Nom : azdazd.png
Affichages : 3684
Taille : 476 octets

    Et ce qu'il faudrait que j'obtienne c'est ca :
    Nom : sanstransposé.jpg
Affichages : 3746
Taille : 1,6 Ko


    Mais la transpo me parait nécessaire parce que, par contre, si je ne transpose, mon image 20x20 et aussi 90° à gauche et inversé horizontalement.

    Pour le code qui produit l'image :

    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
    public static void creerImageMatriceContraste(int[][] matriceContraste) {
     
    			int[][] array = matriceContraste;
     
     
    			for (int j=0; j<nb_colonne;j++) {
     
    				for (int i=0; i<nb_ligne; i++) {
     
    					float surcent = ((float)(array[i][j]) / 100) * 255;
    					int pix = (int)(255 - surcent);
     
    					array[i][j] = pix;
     
    				}
     
    			}
     
    			BufferedImage image = createImage(array,convertToRGB(array), BufferedImage.TYPE_INT_RGB);	
     
    			Image newimg = image.getScaledInstance(120, 120, java.awt.Image.SCALE_SMOOTH);
     
    			labelContraste.setIcon(new ImageIcon(newimg));
     
    		}
     
    		public static BufferedImage createImage(final int[][] array, final int[] pixelArray, final int type) {  
    				final BufferedImage image = new BufferedImage(array[0].length, array.length, type);
    				final WritableRaster raster = image.getRaster();
    				raster.setPixels(0, 0, array[0].length, array.length, pixelArray);  
    				return image;
    		}
     
    		public static int[] convertToRGB(final int[][] array) {
     
    			int[][] newArray = new int[array[0].length][array.length];
    			for(int i=0; i<array.length; i++) {
    				for(int j=0; j<array[i].length; j++) {
    					newArray[j][i]=array[i][j];
    				}
    			}
     
    				final int[] pixelArray = new int[newArray.length*newArray[0].length*3];
    				for(int i=0; i<pixelArray.length; i+=3) {
    					final int r = newArray[(i/3)/newArray[0].length][(i/3)%newArray[0].length];
    					pixelArray[i] = r;
    					pixelArray[i+1] = r;
    					pixelArray[i+2] = r;
    				}
    				return pixelArray;
    		}

  18. #18
    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 : 54
    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
    Citation Envoyé par Serialchaos Voir le message
    Mais la transpo me parait nécessaire parce que, par contre, si je ne transpose, mon image 20x20 et aussi 90° à gauche et inversé horizontalement.
    Pour moi, ça me semble pas normal ça au vu du code que tu montres : on parcourt bien les lignes et les colonnes correctement ici.
    combien vallen nb_colonne et nb_ligne ?

    Citation Envoyé par Serialchaos Voir le message
    L'image en haut à gauche, c'est une image qui provient de mon pc, déja faite, un ficher jpg, et c'est à partir du tableau que j'obtient de cette image de base que je fais le tableau de contraste
    ça c'est intéressant et c'est ce code que je voudrais bien voir.

    Citation Envoyé par Serialchaos Voir le message
    Pour te montrer sans transposé j'obtiens du coup en image contraste cela :
    Nom : azdazd.png
Affichages : 3684
Taille : 476 octets

    Et ce qu'il faudrait que j'obtienne c'est ca :
    Nom : sanstransposé.jpg
Affichages : 3746
Taille : 1,6 Ko
    Il faut que tu sois plus complet parce que avec toutes les images, lues, générées, tableaux de contrastes, transposées, etc... si je n'ai pas exactement tout le détail, je ne peux rien comprendre...
    1. La première image c'est donc un fichier jpg qui existe, dont tu extrais un tableau par je ne sais quel algorithme, puis que tu traites dans creerImageMatriceContraste, que tu affiches en tant qu'image
    2. et la seconde, c'est ce que ça devrait afficher, et qui s'affiche bien si tu ajoutes que la transposition en plus de ce que je viens de dire (point 1), c'est ça ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Alors, donc pour l'image 4x3 nb_colonne = 3 et nb_ligne = 4 si je dis pas de bétises.
    Pour le code que tu demandes (Je précise que la bufferedImage qu'il y a en paramètre c'est donc l'image en fichier jpg que je vais chercher sur l'ordi via JFileChooser), la fonction qui me créé mon tableau de pixel par rapport à l'image de base :

    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
    public static int[][] p_image_matrice(BufferedImage image) throws IOException {
     
    				int[][] matrice = new int[image.getWidth()][image.getHeight()];
     
     
    				for (int j=0; j<image.getHeight();j++) {
    					for (int i=0; i<image.getWidth(); i++) {
     
    						Color pixel = new Color(image.getRGB(i, j));
     
    						int r = pixel.getRed();
    						float diff = (float) (127.5 - r);
    						int inverse = (int) (127.5 + diff);
    						float surcent = ((float)(inverse) / 255) * 100;
     
    						matrice[i][j] = (int) (surcent);
     
    					}
    				}
     
    				return matrice;
     
    			}
    donc voilà, bref ensuite après je fais ma petite mixture afin d'avoir le même tableau mais avec des valeurs multiplié etc... enfin bref pour contrasté, ca c'est bon, c'est sure, ce qui me donne mon tableau matriceContraste à partir duquel je créé donc la seconde image avec ma fonction.

    Concernant les images que je t'ai montré :

    Celle de base :
    Nom : Sans titre1.jpg
Affichages : 2966
Taille : 3,5 Ko

    Celle que j'obtient sans transpo :
    Nom : azdazd.png
Affichages : 4165
Taille : 476 octets

    Celle que j'obtient avec transpo :
    Nom : Sans titre1adzd.jpg
Affichages : 3667
Taille : 2,7 Ko

    Celle que je devrais obtenir :
    Nom : sanstransposé.jpg
Affichages : 3688
Taille : 1,6 Ko


    Voilà et pour information donc, j'ai essayé tout ca avec une image différente qui fais 20x20pixels, et pour elle, sans transpo, même problème l'image est tourné à 90° et inversé horizontalement, cependant, quand je remet la transpo, la, ELLE, est bien mise alors que pour la 4x3 la transpo, niet

  20. #20
    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 : 54
    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
    Citation Envoyé par Serialchaos Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int[][] matrice = new int[image.getWidth()][image.getHeight()];
    La, ça devrait être l'inverse, pour être cohérent avec le reste : le premier, ce sont les lignes (il y getHeight() lignes de pixel(s)), et le second les colonnes (il y a getWidth() colonne(s)) (width=largeur, height=hauteur). Comme ça, normalement, il n'y a plus besoin de transposer : ta matrice est directement dans la bonne position.




    Citation Envoyé par Serialchaos Voir le message
    Celle que j'obtient sans transpo :
    Nom : azdazd.png
Affichages : 4165
Taille : 476 octets

    Celle que j'obtient avec transpo :
    Nom : Sans titre1adzd.jpg
Affichages : 3667
Taille : 2,7 Ko
    je ne comprends pas trop comment les pixels pourraient être mélangés comme ça avec une simple transposition ( les lignes deviennent des colonnes et les colonnes deviennent des lignes).

    Et c'est bien ça que tu devrais obtenir :

    Nom : sanstransposé.jpg
Affichages : 3688
Taille : 1,6 Ko
    si tu transposes ça (les colonnes et lignes s'inversent)
    Nom : azdazd.png
Affichages : 4165
Taille : 476 octets
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Créer une image à partir d'un tableau EXCEL
    Par ARobel20 dans le forum Développement Windows
    Réponses: 0
    Dernier message: 04/04/2014, 17h30
  2. Créer une image à partir d'un tableau de bytes
    Par rockley dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/12/2011, 13h59
  3. créer une image à partir d'un tableau de pixels
    Par pfo69 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/12/2007, 06h46
  4. Créer une image à partir d'un fenêtre
    Par dword2add dans le forum Windows
    Réponses: 6
    Dernier message: 19/09/2006, 12h46
  5. Créer une image à partir d'une URL ?
    Par DrySs dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2006, 09h39

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