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

Entrée/Sortie Java Discussion :

[Image] Enregistrer une image jpg


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif Avatar de younes_
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 229
    Points : 265
    Points
    265
    Par défaut [Image] Enregistrer une image jpg
    Bonjour,

    J'utilise une Framwork qui fournie les deux méthodes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    byte[] 	getImage () //Données de l'image
    byte[] 	getEncodingTable () // Table d'encodage
    Ma question est : Comment crée cette image à partir de ces deux méthodes ?

    J'ai utilisé la technique suivante, mais j'obtiens au finale une image illisible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                FileOutputStream imageContents = null;
                try
                {
                    imageContents = new FileOutputStream("image.jpg",false);  
    // defineImage.getImage() est la fonction qui renvoi les donnée de l'image. 
                    ImageData img = new ImageData(new ByteArrayInputStream(defineImage.getImage()));                          
                    imageContents.write(img.data);
                    imageContents.close();
                }catch (FileNotFoundException e)
                {
                      ...
                 }
    Quelqu'un à une idée concernant la méthode que je peux employer ?

    Merci
    ------------------------
    Website Interactive Object

  2. #2
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    Je suis pas sur mais je crois que le code suivant va t'aider.

    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
     
    		JFrame jFrame = new JFrame("Main");
    		jFrame.setLayout(null);
    		jFrame.setBounds(100,100,320,225);
    		jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
     
    		BufferedImage bufferedImage = new BufferedImage(320,200,BufferedImage.TYPE_3BYTE_BGR);
    		Graphics2D graphics2D = bufferedImage.createGraphics();
     
    		graphics2D.setBackground(new Color(0xff,0xff,0x00));
    		graphics2D.setColor(Color.RED);
     
     
    		graphics2D.drawString("C'est une image jpg",0,20);
     
     
     
    		try {
    			JPEGImageEncoder codec = JPEGCodec.createJPEGEncoder(new FileOutputStream("img.jpg"));
    			codec.encode(bufferedImage);
    		} catch (FileNotFoundException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (ImageFormatException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		JLabel label = new JLabel(new ImageIcon(bufferedImage));
    		label.setBounds(0,0,320,200);
     
    		jFrame.add(label);
     
     
    		jFrame.setVisible(true);
    ou bien tu dois explique exactement ce que tu veux faire
    Even the biggest journey, starts with a single step.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut
    Pour creer un jpeg a partir d'une BufferedImage :




    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
     
    public void creerImage(Image pict, String url){
     
    		try {
     
        	int imageWidth = pict.getWidth(null);
        	int imageHeight = pict.getHeight(null);
     
     
    	    // Dessine l'image dans le buffer
    	    BufferedImage monImage = new BufferedImage(imageWidth,
    	    imageHeight, BufferedImage.TYPE_INT_RGB);
        	Graphics2D graphics2D = monImage.createGraphics();
        	graphics2D.drawImage(pict, 0, 0, imageWidth, imageHeight, null);
        	graphics2D.dispose();
     
    		// Sauvegarde l'image dans le fichier output
        	System.out.println("Création du fichier ...");
        	BufferedOutputStream outBuffered = new BufferedOutputStream(new
        	FileOutputStream(url));
     
        	JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outBuffered);
        	JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(monImage);
     
     		param.setQuality(1.0f, true);
    		encoder.setJPEGEncodeParam(param);
     
        	// Encodage de l'image
        	encoder.encode(monImage);
        	// Fermeture du buffer
        	outBuffered.close();
     
    	    System.out.println("Encodage réussit, image crée.");
     
       		} catch( IOException e2 ) {	e2.printStackTrace(); }
     
        }

    Bonne chance

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    Salut, je sais pas si ça peut t'aider, mais j'ai du faire un code pour copier une image qui était sur mon disque, et en faire un autre (dans mon exemple je passe d'une image en .png et .jpg. J'espère qu'il pourra t'aider :


    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
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import javax.imageio.ImageIO;
     
     
    public class copier_image implements Runnable
    { 
        public BufferedImage bi;
     
        public copier_image()
        {
    		Thread t1 = new Thread(this);
    		t1.start();
        }
     
     
    	public static void main(String[] args) throws IOException
        {
        	copier_image x = new copier_image();
        }
     
     
    	public void run() 
    	{
    		while(true)
    		{
    			for (int i = 1;i<5;i++)
    	    	{
    	    		try 
    				{
    	    			Thread.sleep(1000);
    				}
    				catch(InterruptedException e)
    				{
    					System.out.println(e);
    				}
    				try 
    				{
    					bi = ImageIO.read(new FileInputStream("C:\\mon_image.PNG"));
    				} 
    				catch (FileNotFoundException e) 
    				{
    					e.printStackTrace();
    				} 
    				catch (IOException e) 
    				{
    					e.printStackTrace();
    				}
    				File out = new File("C:\\mon_\image.jpg"); 
    	        	try 
    				{
    					ImageIO.write(bi, "jpeg", out);
    				} 
    	        	catch (IOException e1) 
    				{
    					e1.printStackTrace();
    				}
    	        }
    		}
    	}
    }
    Je ne sais pas s'il est bien ce code, mais il marche. Bon courage à toi ++
    Si tu tapes ta tête contre une cruche et que ça sonne creux, ce n'est pas forcément la cruche qui est vide !!
    Mes topics sont tabous, vous en viendrez tous à bout.

  5. #5
    Membre actif Avatar de younes_
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 229
    Points : 265
    Points
    265
    Par défaut
    Merci pour vos réponses, je vais décortiquer tout cela
    Bonne journée.

    a+
    ------------------------
    Website Interactive Object

  6. #6
    Membre à l'essai
    Femme Profil pro
    ingénieur informatique et Partner DHS club
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingénieur informatique et Partner DHS club

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par n00bi Voir le message
    Pour creer un jpeg a partir d'une BufferedImage :




    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
     
    public void creerImage(Image pict, String url){
     
    		try {
     
        	int imageWidth = pict.getWidth(null);
        	int imageHeight = pict.getHeight(null);
     
     
    	    // Dessine l'image dans le buffer
    	    BufferedImage monImage = new BufferedImage(imageWidth,
    	    imageHeight, BufferedImage.TYPE_INT_RGB);
        	Graphics2D graphics2D = monImage.createGraphics();
        	graphics2D.drawImage(pict, 0, 0, imageWidth, imageHeight, null);
        	graphics2D.dispose();
     
    		// Sauvegarde l'image dans le fichier output
        	System.out.println("Création du fichier ...");
        	BufferedOutputStream outBuffered = new BufferedOutputStream(new
        	FileOutputStream(url));
     
        	JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outBuffered);
        	JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(monImage);
     
     		param.setQuality(1.0f, true);
    		encoder.setJPEGEncodeParam(param);
     
        	// Encodage de l'image
        	encoder.encode(monImage);
        	// Fermeture du buffer
        	outBuffered.close();
     
    	    System.out.println("Encodage réussit, image crée.");
     
       		} catch( IOException e2 ) {	e2.printStackTrace(); }
     
        }

    Bonne chance
    salut,
    s'il te plait qu'est ce
    JPEGImageEncoder et JPEGEncodeParam
    merci de clarifier, ça ne marche pas pour moi

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par salmanis Voir le message
    salut,
    s'il te plait qu'est ce
    JPEGImageEncoder et JPEGEncodeParam
    merci de clarifier, ça ne marche pas pour moi
    Quelque chose à ne pas utiliser. Ce ne sont pas des classes faisant partie de l'implémentation officielle de java, ni de sa spécification.

    Pour enregistrer une image, il faut utiliser ImageIO.write
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Réponses: 3
    Dernier message: 01/07/2006, 11h27
  3. [C#] Comment enregistrer une image dans une tables access ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/06/2006, 11h58
  4. [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, 17h35
  5. enregistrer une image dans une base mysql
    Par zidenne dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/04/2006, 08h48

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