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

2D Java Discussion :

générer une image de bonne qualité


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 48
    Par défaut générer une image de bonne qualité
    Salut!

    J'utilise une méthode que j'ai trouvée quelque part sur ces forums pour imprimer un JPanel. La technique utilisée est de d'abord transformer le JPanel en un fichier image temporaire, pour ensuite imprimer cette image. Ca fonctionne très bien, le seul souci est que l'image générée est de qualité plutot médiocre...
    Est-ce que qqn sait par hasard comment améliorer cette qualité ?

    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
    public void Impression(JPanel tp) {
    		File fileTemp = new File("temp");
    		BufferedImage image = new BufferedImage(tp.getWidth(), tp.getHeight(),
    	     	BufferedImage.TYPE_INT_RGB);		
    	    	Graphics2D g2 = image.createGraphics();
    	    	tp.paint(g2);
    	    	g2.dispose();
    	    	try {
    			ImageIO.write(image, "jpeg", fileTemp);
    		} catch (IOException e) {		
    			e.printStackTrace();
    		}
    		InputStream is = null;
    		try {
    			is = new BufferedInputStream(new FileInputStream(fileTemp));
    		} catch (FileNotFoundException e1) {				
    			e1.printStackTrace();
    		}
    		DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;
    		Doc myDoc = new SimpleDoc(is, flavor, null);	
     
    		PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
                    // l'ajout d'attribut par défaut permet de ne pas devoir els //sélectionner dans la boite de dialogue d'impression.
    		aset.add(new Copies(1));
    		aset.add(MediaSizeName.ISO_A4); 
     
    		PrintService[] printService = PrintServiceLookup.lookupPrintServices(flavor, aset);
    		PrintService defaultService = 
    		PrintServiceLookup.lookupDefaultPrintService();
    		PrintService service = ServiceUI.printDialog(null, 200, 200,
    		printService, defaultService, flavor, aset);
    		if (service != null) {
    			DocPrintJob job = service.createPrintJob();
    			try {
    				job.print(myDoc, aset);
    			} catch (PrintException e) {					
    				ta.append(e.toString() + "\n");
    			}
    			}								
    		fileTemp.delete();
    	}
    Merci !

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    Salut,

    Citation Envoyé par ratakses
    le seul souci est que l'image générée est de qualité plutot médiocre...
    Tu sauves en quoi? JPEG à 75% de compression?

    Si tu ne veux pas perdre en qualité, essaie en enlevant la compression, ou utilises un format sans perte (BMP, PNG, ...)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 48
    Par défaut
    ben en fait justement je me demandais si il yavait peut-être un paramètre pour préciser le taux de compression du jpeg... Je n'ai rien trouvé.

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    De toute façon le JPEG pour des captures d'écran... c'est vraiment pas adapté... Autant au niveau qualité qu'au niveau ratio de compression...
    Le mieux pour ça c'est PNG...

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Euh mais pourquoi faire une image (qu'il n'est pas necessaire de sauvegarder sur le disque d'ailleurs, on peut la conserver en memoire) alors qu'on peut imprimer directement en fournissant le graphics fournis par le Printable a la methode print ou paint du JPanel pour lui demander de se dessiner dessus.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par bouye
    Euh mais pourquoi faire une image (qu'il n'est pas necessaire de sauvegarder sur le disque d'ailleurs, on peut la conserver en memoire) alors qu'on peut imprimer directement en fournissant le graphics fournis par le Printable a la methode print ou paint du JPanel pour lui demander de se dessiner dessus.
    C'est quoi la différence entre print et paint()?

Discussions similaires

  1. [VB6] Afficher une image de bonne qualité dans un form
    Par hpfx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/05/2006, 12h23
  2. Comment générer une image dynamiquement ?
    Par K20 dans le forum Langage
    Réponses: 12
    Dernier message: 19/11/2005, 01h27
  3. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 15h32
  4. [ImageMagick] Comment générer une image d'un code à entrer ?
    Par MiJack dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 16/01/2005, 21h29
  5. Réponses: 6
    Dernier message: 30/09/2004, 12h21

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