begin process at 2010 03 20 12:20:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > "SAUVEGARDEUR" D'UN JPANEL EN IMAGE

"SAUVEGARDEUR" D'UN JPANEL EN IMAGE


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :image, jpg, jpanel, sauvegarde Niveau :Débutant Date de création :13/05/2007 Date de mise à jour :03/08/2007 17:12:28 Vu / téléchargé :7 698 / 243

Auteur : loloof64

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


 Description

C'est une classe (à méthodes non statiques) qui permet de sauvegarder directement le contenu d'un JPanel ou une zone de ce JPanel en fichier JPG.
J'ai crée cette classe car je me suis rendu compte que le Snippet que j'avais proposé sur Codyx à cet effet était un peu trop laxiste, et difficile d'utilisation directe.

Source

  • /**
  • *
  • */
  • package com.loloof64.editeur_kakuro.utilitaires;
  • import java.awt.Color;
  • import java.awt.Component;
  • import java.awt.Graphics;
  • import java.awt.image.BufferedImage;
  • import java.io.File;
  • import java.io.IOException;
  • import javax.imageio.ImageIO;
  • import javax.swing.JFileChooser;
  • import javax.swing.JPanel;
  • import javax.swing.filechooser.FileNameExtensionFilter;
  • /**
  • * Classe qui permet de sauvegarder directement
  • * le contenu une JPanel en image. Il est possible
  • * de préciser la zone à sauvegarder, ainsi que la couleur
  • * qui sera utilisée pour le fond (donc, si le fond n'a pas
  • * été défini dans la fonction paint(Graphics) du JPanel - par
  • * appel à Graphics#fillRect(0,0,getWidht(), getHeight()) par exemple -,
  • * il se peut que la couleur de fond diffère.
  • * @author laurent bernabé
  • *
  • */
  • public class Loloof64JPanelToJPG {
  • /**
  • * Dossier du dernier fichier validé.
  • */
  • protected File dossier = null;
  • /**
  • * Propose une fenêtre Commune de sauvegarde de fichier JPG.
  • * @param parent - Component - Parent
  • * @return true si la fenêtre a été validée ou le
  • * fichier a été validé.
  • */
  • protected File menuSauvegarder(Component parent){
  • JFileChooser fenetreMenu =
  • new JFileChooser();
  • fenetreMenu.setCurrentDirectory(dossier);
  • fenetreMenu.setFileFilter(new FileNameExtensionFilter("Image compressée",new String[]{"jpg"}));
  • int resultat = fenetreMenu.showSaveDialog(parent);
  • if (resultat == JFileChooser.APPROVE_OPTION){
  • dossier = fenetreMenu.getCurrentDirectory();
  • return fenetreMenu.getSelectedFile();
  • }
  • else return null;
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG. Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * Le fond de l'image sera blanc. Toute la zone image du
  • * panneau est dessinée.
  • * @param panneauImage - JPanel - Le panneau source
  • * @param fichier - File - Le descriptif du fichier dans
  • * lequel sauvegarder l'image .
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFile(JPanel panneauImage, File fichier)
  • throws IOException{
  • BufferedImage tamponSauvegarde = new BufferedImage(
  • panneauImage.getPreferredSize().width,
  • panneauImage.getPreferredSize().height,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(Color.WHITE);
  • g.fillRect(0, 0, panneauImage.getPreferredSize().width,
  • panneauImage.getPreferredSize().height);
  • panneauImage.paint(g);
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG, mais en ayant proposé un menu. Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * Le fond de l'image sera blanc. Toute la zone image du
  • * panneau est dessinée.<br>
  • * Aucun fichier ne sera crée si la fenêtre a été fermée
  • * ou si le bouton Annuler a été pressé .
  • * @param panneauImage - JPanel - Le panneau source
  • * @param parent - Component - Le composant parent du menu
  • * sauvegarde.
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFichier(JPanel panneauImage,
  • Component parent)
  • throws IOException{
  • File fichier = menuSauvegarder(parent);
  • if (fichier != null) {
  • BufferedImage tamponSauvegarde = new BufferedImage(panneauImage
  • .getPreferredSize().width, panneauImage.getPreferredSize().height,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(Color.WHITE);
  • g.fillRect(0, 0, panneauImage.getPreferredSize().width, panneauImage
  • .getPreferredSize().height);
  • panneauImage.paint(g);
  • if(fichier.toString().endsWith("jpg"))
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • else ImageIO.write(tamponSauvegarde, "JPG",
  • new File(fichier.toString()+".jpg"));
  • }
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG. La zone à sauvegarder est à préciser.
  • * Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * Le fond de l'image sera blanc. La taille de la zone à sauvegarder est à préciser.
  • * (Cela reste par rapport à l'origine (0,0) du JPanel)
  • * @param panneauImage - JPanel - Le panneau source
  • * @param fichier - File - Le descriptif du fichier dans
  • * lequel sauvegarder l'image .
  • * @param tailleEnX - int - la largeur de la zone à sauver
  • * @param tailleEnY - int - la longueur de la zone à sauver
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFileSelonZone(JPanel panneauImage, File fichier,
  • int tailleEnX, int tailleEnY)
  • throws IOException{
  • BufferedImage tamponSauvegarde = new BufferedImage(
  • tailleEnX,
  • tailleEnY,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(Color.WHITE);
  • g.fillRect(
  • 0,
  • 0,
  • tailleEnX,
  • tailleEnY
  • );
  • panneauImage.paint(g);
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG, mais en ayant proposé un menu.
  • * La taille de la zone à sauvegarder est à préciser.
  • * (Cela reste par rapport à l'origine (0,0) du JPanel)
  • * Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * Le fond de l'image sera blanc. Toute la zone image du
  • * panneau est dessinée.<br>
  • * Aucun fichier ne sera crée si la fenêtre a été fermée
  • * ou si le bouton Annuler a été pressé .
  • * @param panneauImage - JPanel - Le panneau source
  • * @param parent - Component - Le composant parent du menu
  • * sauvegarde.
  • * @param tailleEnX - int - la largeur de la zone à sauver
  • * @param tailleEnY - int - la longueur de la zone à sauver
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFichierSelonZone(JPanel panneauImage,
  • Component parent, int tailleEnX, int tailleEnY)
  • throws IOException{
  • File fichier = menuSauvegarder(parent);
  • if (fichier != null) {
  • BufferedImage tamponSauvegarde = new BufferedImage(
  • tailleEnX,
  • tailleEnY,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(Color.WHITE);
  • g.fillRect(0, 0,
  • tailleEnX,
  • tailleEnY);
  • panneauImage.paint(g);
  • if(fichier.toString().endsWith("jpg"))
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • else ImageIO.write(tamponSauvegarde, "JPG",
  • new File(fichier.toString()+".jpg"));
  • }
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG. Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * La couleur de fond de l'image sera à préciser. Toute la zone image du
  • * panneau est dessinée.
  • * @param panneauImage - JPanel - Le panneau source
  • * @param fichier - File - Le descriptif du fichier dans
  • * lequel sauvegarder l'image .
  • * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
  • * la sauvegarde de l'image .
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFileSelonCouleurFond(JPanel panneauImage, File fichier,
  • Color couleurFond)
  • throws IOException{
  • BufferedImage tamponSauvegarde = new BufferedImage(
  • panneauImage.getPreferredSize().width,
  • panneauImage.getPreferredSize().height,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(couleurFond);
  • g.fillRect(0, 0, panneauImage.getPreferredSize().width,
  • panneauImage.getPreferredSize().height);
  • panneauImage.paint(g);
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG, mais en ayant proposé un menu. Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * La couleur de fond de l'image sera à préciser. Toute la zone image du
  • * panneau est dessinée.<br>
  • * Aucun fichier ne sera crée si la fenêtre a été fermée
  • * ou si le bouton Annuler a été pressé .
  • * @param panneauImage - JPanel - Le panneau source
  • * @param parent - Component - Le composant parent du menu
  • * sauvegarde.
  • * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
  • * la sauvegarde de l'image .
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFichierSelonCouleurFond(JPanel panneauImage,
  • Component parent, Color couleurFond)
  • throws IOException{
  • File fichier = menuSauvegarder(parent);
  • if (fichier != null) {
  • BufferedImage tamponSauvegarde = new BufferedImage(panneauImage
  • .getPreferredSize().width, panneauImage.getPreferredSize().height,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(couleurFond);
  • g.fillRect(0, 0, panneauImage.getPreferredSize().width, panneauImage
  • .getPreferredSize().height);
  • panneauImage.paint(g);
  • if(fichier.toString().endsWith("jpg"))
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • else ImageIO.write(tamponSauvegarde, "JPG",
  • new File(fichier.toString()+".jpg"));
  • }
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG. Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * La couleur de fond ainsi que la taille de la zone à sauvegarder est à préciser.
  • * (Cela reste par rapport à l'origine (0,0) du JPanel) .
  • * @param panneauImage - JPanel - Le panneau source
  • * @param fichier - File - Le descriptif du fichier dans
  • * lequel sauvegarder l'image .
  • * @param
  • * @param
  • * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
  • * la sauvegarde de l'image .
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFileSelonZoneEtCouleurFond(
  • JPanel panneauImage, File fichier,
  • int tailleEnX, int tailleEnY,
  • Color couleurFond)
  • throws IOException{
  • BufferedImage tamponSauvegarde = new BufferedImage(
  • tailleEnX,
  • tailleEnY,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(couleurFond);
  • g.fillRect(0,
  • 0,
  • tailleEnX,
  • tailleEnY);
  • panneauImage.paint(g);
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • }
  • /**
  • * Sauvegarde directement le contenu d'un JPanel dans
  • * un fichier JPG, mais en ayant proposé un menu. Se base sur la méthode paint(Graphics)
  • * du JPanel pour dessiner le contenu de l'image.<br>
  • * La couleur de fond ainsi que la taille de la zone à sauvegarder est à préciser.
  • * (Cela reste par rapport à l'origine (0,0) du JPanel)<br>
  • * Aucun fichier ne sera crée si la fenêtre a été fermée
  • * ou si le bouton Annuler a été pressé .
  • * @param panneauImage - JPanel - Le panneau source
  • * @param parent - Component - Le composant parent du menu
  • * sauvegarde.
  • * @param
  • * @param
  • * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
  • * la sauvegarde de l'image .
  • * @throws IOException si le fichier n'a pas pu être créé .
  • */
  • public void sauverJPanelDansFichierSelonZoneEtCouleurFond(JPanel panneauImage,
  • Component parent,
  • int tailleEnX, int tailleEnY,
  • Color couleurFond)
  • throws IOException{
  • File fichier = menuSauvegarder(parent);
  • if (fichier != null) {
  • BufferedImage tamponSauvegarde = new BufferedImage(tailleEnX, tailleEnY,
  • BufferedImage.TYPE_3BYTE_BGR);
  • Graphics g = tamponSauvegarde.getGraphics();
  • g.setColor(couleurFond);
  • g.fillRect(0, 0, tailleEnX, tailleEnY);
  • panneauImage.paint(g);
  • if(fichier.toString().endsWith("jpg"))
  • ImageIO.write(tamponSauvegarde, "JPG", fichier);
  • else ImageIO.write(tamponSauvegarde, "JPG",
  • new File(fichier.toString()+".jpg"));
  • }
  • }
  • }
/**
 * 
 */
package com.loloof64.editeur_kakuro.utilitaires;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 * Classe qui permet de sauvegarder directement
 * le contenu une JPanel en image. Il est possible
 * de préciser la zone à sauvegarder, ainsi que la couleur
 * qui sera utilisée pour le fond (donc, si le fond n'a pas
 * été défini dans la fonction paint(Graphics) du JPanel - par
 * appel à Graphics#fillRect(0,0,getWidht(), getHeight()) par exemple -,
 * il se peut que la couleur de fond diffère.
 * @author laurent bernabé
 *
 */
public class Loloof64JPanelToJPG {
	
	/**
	 * Dossier du dernier fichier validé. 
	 */
	protected File dossier = null;
	
	/**
	 * Propose une fenêtre Commune de sauvegarde de fichier JPG.
	 * @param parent - Component - Parent
	 * @return true si la fenêtre a été validée ou le
	 * fichier a été validé.
	 */
	protected File menuSauvegarder(Component parent){
		JFileChooser fenetreMenu = 
			new JFileChooser();
		fenetreMenu.setCurrentDirectory(dossier);
		fenetreMenu.setFileFilter(new FileNameExtensionFilter("Image compressée",new String[]{"jpg"}));
		int resultat = fenetreMenu.showSaveDialog(parent);
		if (resultat == JFileChooser.APPROVE_OPTION){
			dossier = fenetreMenu.getCurrentDirectory();
			return fenetreMenu.getSelectedFile();
		}
		else return null;
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG. Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * Le fond de l'image sera blanc. Toute la zone image du
	 * panneau est dessinée.
	 * @param panneauImage - JPanel - Le panneau source
	 * @param fichier - File - Le descriptif du fichier dans 
	 * lequel sauvegarder l'image .
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFile(JPanel panneauImage, File fichier)
	throws IOException{
		BufferedImage tamponSauvegarde = new BufferedImage(
				panneauImage.getPreferredSize().width,
				panneauImage.getPreferredSize().height,
				BufferedImage.TYPE_3BYTE_BGR);
		Graphics g = tamponSauvegarde.getGraphics();
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, panneauImage.getPreferredSize().width,
				panneauImage.getPreferredSize().height);
		panneauImage.paint(g);
		ImageIO.write(tamponSauvegarde, "JPG", fichier);
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG, mais en ayant proposé un menu. Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * Le fond de l'image sera blanc. Toute la zone image du
	 * panneau est dessinée.<br>
	 * Aucun fichier ne sera crée si la fenêtre a été fermée
	 * ou si le bouton Annuler a été pressé .
	 * @param panneauImage - JPanel - Le panneau source
	 * @param parent - Component - Le composant parent du menu
	 * sauvegarde.
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFichier(JPanel panneauImage,
			Component parent)
	throws IOException{
		File fichier = menuSauvegarder(parent);
		if (fichier != null) {
			BufferedImage tamponSauvegarde = new BufferedImage(panneauImage
					.getPreferredSize().width, panneauImage.getPreferredSize().height,
					BufferedImage.TYPE_3BYTE_BGR);
			Graphics g = tamponSauvegarde.getGraphics();
			g.setColor(Color.WHITE);
			g.fillRect(0, 0, panneauImage.getPreferredSize().width, panneauImage
					.getPreferredSize().height);
			panneauImage.paint(g);
			if(fichier.toString().endsWith("jpg"))
				ImageIO.write(tamponSauvegarde, "JPG", fichier);
			else ImageIO.write(tamponSauvegarde, "JPG", 
					new File(fichier.toString()+".jpg"));
		}
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG. La zone à sauvegarder est à préciser.
	 * Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * Le fond de l'image sera blanc. La taille de la zone à sauvegarder est à préciser.
	 * (Cela reste par rapport à l'origine (0,0) du JPanel)
	 * @param panneauImage - JPanel - Le panneau source
	 * @param fichier - File - Le descriptif du fichier dans 
	 * lequel sauvegarder l'image .
	 * @param tailleEnX - int - la largeur  de la zone à sauver
	 * @param tailleEnY - int - la longueur de la zone à sauver
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFileSelonZone(JPanel panneauImage, File fichier,
			int tailleEnX, int tailleEnY)
	throws IOException{
		BufferedImage tamponSauvegarde = new BufferedImage(
				tailleEnX,
				tailleEnY,
				BufferedImage.TYPE_3BYTE_BGR);
		Graphics g = tamponSauvegarde.getGraphics();
		g.setColor(Color.WHITE);
		g.fillRect(
				0, 
				0, 
				tailleEnX,
				tailleEnY		
		);
		panneauImage.paint(g);
		ImageIO.write(tamponSauvegarde, "JPG", fichier);
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG, mais en ayant proposé un menu. 
	 * La taille de la zone à sauvegarder est à préciser.
	 * (Cela reste par rapport à l'origine (0,0) du JPanel)
	 * Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * Le fond de l'image sera blanc. Toute la zone image du
	 * panneau est dessinée.<br>
	 * Aucun fichier ne sera crée si la fenêtre a été fermée
	 * ou si le bouton Annuler a été pressé .
	 * @param panneauImage - JPanel - Le panneau source
	 * @param parent - Component - Le composant parent du menu
	 * sauvegarde.
	 * @param tailleEnX - int - la largeur  de la zone à sauver
	 * @param tailleEnY - int - la longueur de la zone à sauver
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFichierSelonZone(JPanel panneauImage,
			Component parent, int tailleEnX, int tailleEnY)
	throws IOException{
		File fichier = menuSauvegarder(parent);
		if (fichier != null) {
			BufferedImage tamponSauvegarde = new BufferedImage(
					tailleEnX, 
					tailleEnY,
					BufferedImage.TYPE_3BYTE_BGR);
			Graphics g = tamponSauvegarde.getGraphics();
			g.setColor(Color.WHITE);
			g.fillRect(0, 0, 
					tailleEnX, 
					tailleEnY);
			panneauImage.paint(g);
			if(fichier.toString().endsWith("jpg"))
				ImageIO.write(tamponSauvegarde, "JPG", fichier);
			else ImageIO.write(tamponSauvegarde, "JPG", 
					new File(fichier.toString()+".jpg"));
		}
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG. Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * La couleur de fond de l'image sera à préciser. Toute la zone image du
	 * panneau est dessinée.
	 * @param panneauImage - JPanel - Le panneau source
	 * @param fichier - File - Le descriptif du fichier dans 
	 * lequel sauvegarder l'image .
	 * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
	 * la sauvegarde de l'image .
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFileSelonCouleurFond(JPanel panneauImage, File fichier,
			Color couleurFond)
	throws IOException{
		BufferedImage tamponSauvegarde = new BufferedImage(
				panneauImage.getPreferredSize().width,
				panneauImage.getPreferredSize().height,
				BufferedImage.TYPE_3BYTE_BGR);
		Graphics g = tamponSauvegarde.getGraphics();
		g.setColor(couleurFond);
		g.fillRect(0, 0, panneauImage.getPreferredSize().width,
				panneauImage.getPreferredSize().height);
		panneauImage.paint(g);
		ImageIO.write(tamponSauvegarde, "JPG", fichier);
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG, mais en ayant proposé un menu. Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * La couleur de fond de l'image sera à préciser. Toute la zone image du
	 * panneau est dessinée.<br>
	 * Aucun fichier ne sera crée si la fenêtre a été fermée
	 * ou si le bouton Annuler a été pressé .
	 * @param panneauImage - JPanel - Le panneau source
	 * @param parent - Component - Le composant parent du menu
	 * sauvegarde.
	 * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
	 * la sauvegarde de l'image .
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFichierSelonCouleurFond(JPanel panneauImage,
			Component parent, Color couleurFond)
	throws IOException{
		File fichier = menuSauvegarder(parent);
		if (fichier != null) {
			BufferedImage tamponSauvegarde = new BufferedImage(panneauImage
					.getPreferredSize().width, panneauImage.getPreferredSize().height,
					BufferedImage.TYPE_3BYTE_BGR);
			Graphics g = tamponSauvegarde.getGraphics();
			g.setColor(couleurFond);
			g.fillRect(0, 0, panneauImage.getPreferredSize().width, panneauImage
					.getPreferredSize().height);
			panneauImage.paint(g);
			if(fichier.toString().endsWith("jpg"))
				ImageIO.write(tamponSauvegarde, "JPG", fichier);
			else ImageIO.write(tamponSauvegarde, "JPG", 
					new File(fichier.toString()+".jpg"));
		}
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG. Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * La couleur de fond ainsi que la taille de la zone à sauvegarder est à préciser.
	 * (Cela reste par rapport à l'origine (0,0) du JPanel) .
	 * @param panneauImage - JPanel - Le panneau source
	 * @param fichier - File - Le descriptif du fichier dans 
	 * lequel sauvegarder l'image .
	 * @param
	 * @param
	 * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
	 * la sauvegarde de l'image .
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFileSelonZoneEtCouleurFond(
			JPanel panneauImage, File fichier,
			int tailleEnX, int tailleEnY,
			Color couleurFond)
	throws IOException{
		BufferedImage tamponSauvegarde = new BufferedImage(
				tailleEnX,
				tailleEnY,
				BufferedImage.TYPE_3BYTE_BGR);
		Graphics g = tamponSauvegarde.getGraphics();
		g.setColor(couleurFond);
		g.fillRect(0, 
					0, 
					tailleEnX,
					tailleEnY);
		panneauImage.paint(g);
		ImageIO.write(tamponSauvegarde, "JPG", fichier);
	}
	
	/**
	 * Sauvegarde directement le contenu d'un JPanel dans 
	 * un fichier JPG, mais en ayant proposé un menu. Se base sur la méthode paint(Graphics)
	 * du JPanel pour dessiner le contenu de l'image.<br>
	 * La couleur de fond ainsi que la taille de la zone à sauvegarder est à préciser.
	 * (Cela reste par rapport à l'origine (0,0) du JPanel)<br>
	 * Aucun fichier ne sera crée si la fenêtre a été fermée
	 * ou si le bouton Annuler a été pressé .
	 * @param panneauImage - JPanel - Le panneau source
	 * @param parent - Component - Le composant parent du menu
	 * sauvegarde.
	 * @param
	 * @param
	 * @param couleurFond - Color - La couleur de fond qui sera utilisée dans
	 * la sauvegarde de l'image .
	 * @throws IOException si le fichier n'a pas pu être créé .
	 */
	public void sauverJPanelDansFichierSelonZoneEtCouleurFond(JPanel panneauImage,
			Component parent,
			int tailleEnX, int tailleEnY,
			Color couleurFond)
	throws IOException{
		File fichier = menuSauvegarder(parent);
		if (fichier != null) {
			BufferedImage tamponSauvegarde = new BufferedImage(tailleEnX, tailleEnY,
					BufferedImage.TYPE_3BYTE_BGR);
			Graphics g = tamponSauvegarde.getGraphics();
			g.setColor(couleurFond);
			g.fillRect(0, 0, tailleEnX, tailleEnY);
			panneauImage.paint(g);
			if(fichier.toString().endsWith("jpg"))
				ImageIO.write(tamponSauvegarde, "JPG", fichier);
			else ImageIO.write(tamponSauvegarde, "JPG", 
					new File(fichier.toString()+".jpg"));
		}
	}
}

 Conclusion

On peut en outre faire appel à une fonction qui a déja le menu de sauvegarde programmé.
La fonction sauvegarde se base sur la méthode paint(Graphics) du JPanel  pour sauvegarder le dessin
Seul hic : je n'ai pas trouvé comment faire en sorte que l'on puisse déterminer le départ de la zone SANS QUE L ON AIT A REDEFINIR LES METHODES PAINT DES JPANEL A SAUVEGARDER. Aussi, la zone démarre obligatoirement de l'origine (0,0) du Jpanel.

Bug connu : aucun à ce jour :) :) :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

14 mai 2007 09:13:46 :
Ajouts de commentaires JAVADOC de paramètres (Désolé pour cette GRANDE négligence :( ).
28 juillet 2007 12:32:58 :
La taille de l'image sauvegardée est bien celle de la propriété PreferredSize du JPanel en question, et non plus de sa propriété Size --> utile pour les images sauvegardées dans les JScrollPane, étant donné que dans ce cas, c'est la propriété PreferredSize que l'on met à jour.
28 juillet 2007 12:33:15 :
La taille de l'image sauvegardée est bien celle de la propriété PreferredSize du JPanel en question, et non plus de sa propriété Size --> utile pour les images sauvegardées dans les JScrollPane, étant donné que dans ce cas, c'est la propriété PreferredSize que l'on met à jour.
28 juillet 2007 22:34:30 :
Je ne fais plus appel à la propriété getSize() du JPanel à sauvegarder, mais bien à la propriété getPreferredSize() : ainsi lorsque l'on redimensionne un JPanel inclus dans un JScrollPane, l'image sauvegardée les dimensions réelles du JPanel redimensionné.
29 juillet 2007 20:54:20 :
Utilisation des prorpiétés getPreferredSize() du JPanel à sauvegarder au lieu des propriétés getSize() : utile pour les JPanel incluses dans les JScrollPane .
29 juillet 2007 20:55:46 :
Utilisation des prorpiétés getPreferredSize() du JPanel à sauvegarder au lieu des propriétés getSize() : utile pour les JPanel incluses dans les JScrollPane .
03 août 2007 17:12:28 :
J'ai recompressé le fichier, Eclipse ne le faisait pas bien .

 Sources du même auteur

Source avec Zip SIMPLE CUBE COLORÉ POUR J2ME [JSR184] AVEC UNE DEMO SIMPLE
Source avec Zip Source avec une capture JPANELTEXTEDEFILANT : FAIRE DEFILER DU TEXTE (PLUSIEURES MAN...
Source avec Zip Source avec une capture [JAVA][J2ME] SOMMES KAKURO POUR MIDP 2.0
Source avec Zip CRÉATEUR DE ARBORESCENCE SIMPLE POUR JTREE À PARTIR D'UN XML
Source avec Zip Source avec une capture VIEWER XML SIMPLE

 Sources de la même categorie

Source avec Zip CLASS DEMINEUR par Niidhogg
AJOUTER LE MAIL À LA LISTE DE CONTACT HOTMAIL POUR EVOLUTION... par sarathai
Source avec Zip ENVOI MAIL AVEC JAVA par mdahmoune
Source avec Zip Source avec une capture JADE PAR LA PRATIQUE par mdahmoune
CHUNKEDXML, LIRE DU XML PAR MORCEAU par AlexN

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [CONCOURS ANDROID] PHOTOTHÈQUE par julienchauveau
Source avec Zip JFIFEXTRACT par vinvay
Source avec Zip Source avec une capture PAINTREVOLUTION IMAGE 2D DESSIN DE FIGURES ENREGISTREMENT JP... par vivi5757
Source avec une capture TÉLÉCHARGEMENT D'IMAGES (POCHETTES CD, DVD, LIVRES...) SUR I... par dufour137
FAIRE DEFILER UNE IMAGE par Nic.C

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

JPANEL et IMAGE JPG [ par bathymabilo ] Bonjour les javacrates, je suis débutant en java(IDE NETBEAN 5.0) et je viens de me heurter à un problème; je veux charger une photo de type JPG je ma bouton + menu contextuel avec swing ? [ par lex1111 ] bonjour a tous j'aimerais savoir s'il est possible de mettre avec swing un menu contextuel juste en dessous d'un bouton comme le fait firefox avec les Image en fond JPanel [ par garpa ] Bonjour !Voilà, j'ai réussi à mettre une image en fond d'un JPanel et le tout dans une frame. Le probleme c'est que quand je redéfini des panels dans BufferedImage dans un JPanel [ par patriospatrios ] Bonjour,je reçois une image via le réseau sous forme d'un tableau de byte. Je suis entrain de transformer ce tableau de byte en un BufferedImage pour Drag'n'Drop entre JPanel [ par dvoraky ] Salut tout le monde,Bon ben voilà, dans le titre, j'ai pratiquement tout dis.Je dispose d'une image qui se trouve dans un JPanel et je lui ai rajouté chargement d'image [ par nathanoj12 ] Je suis un débutant en java.j'ai une interface graphique composé d'un jPanel et d'un bouton qui permet de charger une image dans le jPanel.Quand je cl Probleme de addMouseListener en JPanel [ par lkgreg ] Salut tout le monde, comme le dis le titre mon problème consiste à appliquer le addMouseListener à JPanel, bizarre que ça marche pas!! sachant JPanel + JScrollPane [ par kels0 ] Bonjour !Je souhaite créer un composant Java, qui permet de visualiser un répertoire contenant des images sous forme de miniature, un peu comme dans l image jframe [ par pretyzenta ] bonsoir, S'il vous plait je suis entrin de préparer une application pour mon stage,mon problème : je veux superposer des composants sur une image (déf Encore un JPanel qui veut pas etre transparent ! [ par NiKo0701092 ] Mon JPanel veux pas etre transparent ! Voici mon code (synthétisé):  JPanel panel = new JPanel() {   public void paintComponent(Graphics g) {        


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales