2013-02-26 2 views
1

La façon dont je suis l'enregistrement d'une jfreechart à un fichier jpeg est:Enregistrement d'une image dans un fichier .jpg: Java

JFreeChart chart = ChartFactory.createXYLineChart(
"Hysteresis Plot", // chart title 
"Pounds(lb)", // domain axis label 
"Movement(inch)", // range axis label 
dataset, // data 
PlotOrientation.VERTICAL, // orientation 
false, // include legend 
true, // tooltips 
false // urls 
); 

Puis:

image=chart.createBufferedImage(300, 200); 

L'image appeas comme: enter image description here

Ma fonction de sauvegarde est:

public static void saveToFile(BufferedImage img) 
    throws FileNotFoundException, IOException 
    { 
     FileOutputStream fos = new FileOutputStream("D:/Sample.jpg"); 
     JPEGImageEncoder encoder2 = 
     JPEGCodec.createJPEGEncoder(fos); 
     JPEGEncodeParam param2 = 
     encoder2.getDefaultJPEGEncodeParam(img); 
     param2.setQuality((float) 200, true); 
     encoder2.encode(img,param2); 
     fos.close(); 
    } 

Je l'appelle comme:

try{ 
      saveToFile(image); 
      }catch(Exception e){ 
      e.printStackTrace(); 
     } 

Les appeas d'images enregistrées en tant que:

enter image description here

Toute suggestion, où je me trompe ou comment il sauver la façon dont il apparaît ou peut-être Je dois enregistrer en tant que .png. Quelqu'un peut-il me dire comment enregistrer en tant que .png?

Merci

+2

Pour plus d'informations sur la sauvegarde en tant que png, http://docs.oracle.com/javase/tutorial/2d/images/saveimage.html – Coffee

Répondre

6

Une solution simple:

public static void saveToFile(BufferedImage img) 
    throws FileNotFoundException, IOException 
    { 

     File outputfile = new File("D:\\Sample.png"); 
    ImageIO.write(img, "png", outputfile); 
    } 

enregistré l'image, la façon dont il apparaît.

1

Je suggère plutôt qu'au lieu d'utiliser ImageIo.write afin d'enregistrer votre image, vous feriez mieux d'utiliser la fonction suivante:

ChartUtilities.saveChartAsJPEG("name of your file", jfreechart, lenght, width); 

Parce que vous pouvez gérer la taille de l'image, mais aussi d'enregistrer l'image sans filtres.

1

Voici un bon exemple de comment cela pourrait être fait.

File imageFile = new File("C:\\LineChart.png"); 
int width = 640; 
int height = 480; 
try { 
    ChartUtilities.saveChartAsPNG(imageFile, chart, width, height); 
} catch (IOException ex) { 
    System.err.println(ex); 
} 
Questions connexes