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 :

Image enregistrée aux couleurs stroboscopiques


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 127
    Par défaut Image enregistrée aux couleurs stroboscopiques
    Bonjour,
    J'ai un (petit) souci.

    Les images que j'enregistre dans ce petit bout de code ont des couleurs tout à fait irréelles quand je les ouvres avec photoshop ou aperçu des images windows. Je suppose que c'est un souci d'encodage parce que lues par l'application java, elles ont des couleurs tout à fait normales, mais je me dis que si je dois plus tard les utiliser dans un autre contexte autant qu'elles aient un 'encodage' standard.
    Qu'est ce que j'ai oublié de faire ?

    D'avance merci.

    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
    try {
    			File fichier = new File(photo);
    			BufferedImage bi = ImageIO.read(fichier);
    			BufferedImage reduite = scale(bi, 200);
     
    		    Iterator<ImageWriter> writers =  ImageIO.getImageWritersByFormatName("jpg");
    		    ImageWriter writer = (ImageWriter)writers.next();
     
    		    ImageWriteParam iwp = writer.getDefaultWriteParam();
    		    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    		    iwp.setCompressionQuality(0.6f);
     
     
    		    fichierTemp = new File(nomFichierTemp);
    		    fichierTemp.createNewFile();
     
    		    ImageOutputStream ios = ImageIO.createImageOutputStream(fichierTemp);
    		    writer.setOutput(ios);
     
    		    writer.write(reduite);
    		    ios.close();
    		    //TODO
     
    		} catch (IOException e1) {
    			System.out.println("Erreur dans le traitement image");
    			e1.printStackTrace();
    			return null;
    		}

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Peut tu fait une capture de ce que tu attends et ce que tu vois qui est "suspect" ? parce que vu comme ca rien dans le code ne me saute aux yeux
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 127
    Par défaut


    Voilà une image traitée par le bout de code ci dessus.

    Elle s'affiche correctement sous java, mais ailleurs, ben c'est pas réutilisable, et même si ça ne me pose pas souci immédiatement, ça pourrait être problématique, le jour où je voudrais utiliser ces images hors java.

    Merci d'avance.

    [EDIT: non, non les couleurs sont pas normales !! C'est une fleur jaune à la base...]

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Ok, tu px envoyer l'image de depart comme attachment ?

    Mais sinon, ta fonction scale, elle sort d'ou ? j'ai un doute dessus...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 127
    Par défaut
    T'as raison, ça doit venir de cette fonction, j'ai un doute sur le "ARGB".

    Qu'en penses-tu ?

    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
    	/** 
             * Redimensionne une image.
             * 
             * @param source Image à redimensionner.
             * @param width Largeur de l'image cible.
             * @param height Hauteur de l'image cible.
             * @return Image redimensionnée.
             */
    	public static BufferedImage scale(BufferedImage source, int max) {
    		int hauteur = source.getHeight();
    		int largeur = source.getWidth();
     
    		if (hauteur<=max && largeur<=max) return source;
    		float echelle;
     
    		if (hauteur>largeur){
    			echelle = (float)max/(float)hauteur;
    		}
    		else {
    			echelle = (float)max/(float)largeur;
    		}
     
    	    /* On crée une nouvelle image aux bonnes dimensions. */
    	    BufferedImage buf = new BufferedImage((int)(largeur*echelle), (int)(hauteur*echelle), BufferedImage.TYPE_INT_ARGB);
     
    	    /* On dessine sur le Graphics de l'image bufferisée. */
    	    Graphics2D g = buf.createGraphics();
    	    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    	    g.drawImage(source, 0, 0, (int)(largeur*echelle), (int)(hauteur*echelle), null);
    	    g.dispose();
     
    	    /* On retourne l'image bufferisée, qui est une image. */
     
    	    return buf;
    	}

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Je ne sais pas testé pour le moment, mais sinon il y'a une methode dans bufferedimage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getScaledInstance(width, height, hints);
    Ca devrait aller mieux et en une seule ligne (sauf si le problème ne vient pas du scale).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Image] Enregistrer une image jpg
    Par younes_ dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 14/04/2011, 20h17
  2. [Image] Enregistrer une image générée par un script PHP
    Par navis84 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 22/05/2006, 18h35
  3. [Image]Nombre de couleur d'une image
    Par daxuza dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 05/09/2005, 09h14
  4. [Image]Dégradé de couleur
    Par eyal555 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/04/2005, 10h10
  5. [image] trouver les couleurs les plus présentes
    Par giminik dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 25/01/2005, 04h35

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