[Date Prev][Date Next][Index][Thread]
[SGT Mail Archive]
[SGT Main Page]
Re: Printing to a PNG image
*************************************************
Message from the sgt mail list.
*************************************************
Hi all,
thanks for the reply. That was the problem, the draw() was missing. In the GUI
mode, I used paintComponent(), which didn't work in the command line mode.
Now it's working!
Thanks,
Nick.
> *************************************************
> Message from the sgt mail list.
> *************************************************
>
> Dear Nicolas,
>
> I have wrestled with a similar problem, although it was a while ago
> now and I don't fully remember how I solved it! However, maybe the
> following will help:
>
> 1) Conversation on this mailing list:
> http://www.epic.noaa.gov/java/sgt/mail/msg00383.html.
> 2) Random extract from my notes:
>
> ---- Begin notes ----
> This works but draws the plot with borders etc and uses addNotify(),
> which isn't really supposed to be called directly.
>
> See http://mail.epic.noaa.gov/sgt/msg00148.html
>
> BufferedImage im = new BufferedImage(500, 500,
> BufferedImage.TYPE_4BYTE_ABGR);
>
> JGridDemo demo = new JGridDemo();
> JPlotLayout graph = demo.makeGraph();
> graph.getComponent().addNotify();
> graph.getComponent().validate();
> graph.draw(im.createGraphics());
> ImageIO.write(im, "png", new File("C:\\jplot.png"));
> ---- End notes ----
>
> I'm now working on other things so I probably won't be of much help in
> deciphering this if it's not clear to you I'm afraid. However I'll
> help if I can.
>
> Let me know if this works for you!
>
> Cheers, Jon
>
> On 10/10/07, Nicolas Michael <software@nmichael.de> wrote:
> > *************************************************
> > Message from the sgt mail list.
> > *************************************************
> >
> > Hello,
> >
> > I'm using SGT for displaying graphs, which works fine in my GUI application.
> > Also printing the graph that is displayed on the screen into a PNG image works
> > fine.
> >
> > However, I'm trying to also create graphs in an command-line mode (not
> > displaying them within a JFrame) and directly writing them to a PNG image.
> > This
> > always results in an empty (all white) image.
> >
> > This is basically the code I use:
> >
> > public class GraphPanel extends gov.noaa.pmel.sgt.JPane {
> > ....
> >
> > public void updateGraphPanel() {
> > ... layers and graphs created inside this method ...
> > }
> >
> > public void saveImageToFile(String fname) {
> > int width = this.getWidth();
> > int height = this.getHeight();
> >
> > BufferedImage img = new
> > BufferedImage(width,height,BufferedImage.TYPE_4BYTE_ABGR);
> > Graphics2D g = (Graphics2D)img.getGraphics();
> > try {
> > g.setBackground(Color.WHITE);
> > this.paintComponent(g);
> > File file = new File(fname);
> > javax.imageio.ImageIO.write(img, "PNG", file);
> > } catch (Exception ee) {
> > ee.printStackTrace();
> > } finally {
> > g.dispose();
> > }
> > }
> > }
> >
> > GraphPanel graphPanel = new GraphPanel(project,1024,768); // create new
> > GraphPanel with size 1024x768
> > graphPanel.updateGraphPanel(); // create all layers and graphs
> > graphPanel.saveImageToFile("test.png");
> >
> > I only get a 1024x768 pixel white png image. I already played around with
> > setBatch(), doLayout(), draw() etc. but couldn't find the right solution.
> >
> > Any help appreciated!
> >
> > Nick.
> >
> >
> > *************************************************
> > To remove yourself from this mailing list,
> > send mail to <epic-majordomo@noaa.gov> with
> > "unsubscribe sgt" in the message body.
> >
>
>
> --
> --------------------------------------------------------------
> Dr Jon Blower Tel: +44 118 378 5213 (direct line)
> Technical Director Tel: +44 118 378 8741 (ESSC)
> Reading e-Science Centre Fax: +44 118 378 6413
> ESSC Email: jdb@mail.nerc-essc.ac.uk
> University of Reading
> 3 Earley Gate
> Reading RG6 6AL, UK
> --------------------------------------------------------------
>
> *************************************************
> To remove yourself from this mailing list,
> send mail to <epic-majordomo@noaa.gov> with
> "unsubscribe sgt" in the message body.
*************************************************
To remove yourself from this mailing list,
send mail to <epic-majordomo@noaa.gov> with
"unsubscribe sgt" in the message body.
Privacy Notice,
External Links Disclaimer.