How do you save a prefuse visualization graph as jpeg image?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sriniwas
    New Member
    • Jan 2008
    • 4

    How do you save a prefuse visualization graph as jpeg image?

    i want to save my prefuse visualization graph as jpeg image,plz help me with java code,how will i do it.
  • BigDaddyLH
    Recognized Expert Top Contributor
    • Dec 2007
    • 1216

    #2
    Originally posted by sriniwas
    i want to save my prefuse visualization graph as jpeg image,plz help me with java code,how will i do it.
    Take a look at the javax.imageio packages. It can be as simple as one line of code, if you have a BufferedImage:

    [CODE=Java]boolean success = ImageIO.write(b ufferedImage, "jpeg", file);[/CODE]

    Comment

    • sriniwas
      New Member
      • Jan 2008
      • 4

      #3
      Originally posted by BigDaddyLH
      Take a look at the javax.imageio packages. It can be as simple as one line of code, if you have a BufferedImage:

      [CODE=Java]boolean success = ImageIO.write(b ufferedImage, "jpeg", file);[/CODE]

      Hi Frnd,

      m using prefuse visulation,it's have one display class and this class have one saveImage(outPu tStream, String jpg,double size);. now graph is converting ia jpg image properly.now my problem is tht,If graph is to large if it going out of screen thn ,i m getting jpg image on screen disply graph,m not getting the image of tht graph which going out of screen. this is my code


      d = new Display(visuali zation);
      fileOutPutStrea m=new FileOutputStrea m("c:/sri/img.jpg");
      d.saveImage(fil eOutPutStream," jpg",2.6);

      plz if u can do some help me, tht plz do it
      it's very important for me.

      Comment

      • sriniwas
        New Member
        • Jan 2008
        • 4

        #4
        Hi Frnd's,

        m using prefuse visulation,it's have one display class and this class have one saveImage(outPu tStream, String jpg,double size);. now graph is converting ia jpg image properly.now my problem is tht,If graph is to large if it going out of screen thn ,i m getting jpg image on screen disply graph,m not getting the image of tht graph which going out of screen. this is my code



        This is my code



        import com.sun.corba.s e.impl.orbutil. graph.Node;
        import java.awt.Border Layout;
        import java.awt.Dimens ion;
        import java.awt.Point;
        import java.awt.dnd.Dr agSource;
        import java.awt.event. ActionEvent;
        import java.awt.event. ActionListener;
        import java.awt.event. ItemEvent;
        import java.awt.event. MouseAdapter;
        import java.awt.event. MouseEvent;
        import java.awt.event. MouseListener;
        import java.awt.event. WindowAdapter;
        import java.awt.event. WindowEvent;
        import java.awt.event. WindowListener;
        import java.awt.image. BufferedImage;
        import java.io.File;
        import java.io.FileOut putStream;
        import java.io.IOExcep tion;
        import java.io.OutputS tream;
        import java.util.Itera tor;
        import javax.crypto.Nu llCipher;
        import javax.swing.JBu tton;
        import javax.swing.JFr ame;
        import javax.swing.JOp tionPane;
        import javax.swing.bor der.Border;

        import prefuse.Constan ts;
        import prefuse.Display ;
        import prefuse.Visuali zation;
        import prefuse.action. Action;
        import prefuse.action. ActionList;
        import prefuse.action. RepaintAction;
        import prefuse.action. assignment.Colo rAction;
        import prefuse.action. assignment.Data ColorAction;
        import prefuse.action. layout.graph.Fo rceDirectedLayo ut;
        import prefuse.activit y.Activity;
        import prefuse.activit y.ActivityAdapt er;
        import prefuse.activit y.ActivityListe ner;
        import prefuse.control s.DragControl;
        import prefuse.control s.PanControl;
        import prefuse.control s.ToolTipContro l;
        import prefuse.control s.ZoomControl;
        import prefuse.control s.FocusControl;
        import prefuse.control s.DragControl;
        import prefuse.data.Gr aph;
        import prefuse.data.Ta ble;
        import prefuse.data.Tu ple;
        import prefuse.data.io .DataIOExceptio n;
        import prefuse.data.io .GraphMLReader;
        import prefuse.data.io .GraphWriter;
        import prefuse.data.tu ple.TupleSet;
        import prefuse.render. DefaultRenderer Factory;
        import prefuse.render. LabelRenderer;
        import prefuse.render. ShapeRenderer;
        import prefuse.util.Co lorLib;
        import prefuse.util.fo rce.DragForce;
        import prefuse.visual. NodeItem;
        import prefuse.visual. VisualItem;
        import javax.swing.*;
        import java.awt.Contai ner;
        import java.io.FileInp utStream;
        import java.awt.Canvas ;
        import java.awt.event. WindowAdapter;
        import java.awt.event. WindowListener;
        import java.awt.Image;
        import java.util.Set;
        class DrawGrahp extends JFrame{

        private FileOutputStrea m fileOutPutStrea m=null;
        private JButton button;
        private JFrame frame;
        private Visualization vis;
        private LabelRenderer r;
        private ActionList layout;
        private ActionList color;
        private Display d ;
        private int a,b;
        private Graph graph = null;
        private JPanel jpanel;
        public DrawGrahp(){
        jpanel=new JPanel();


        button=new JButton("Save") ;
        Container con= getContentPane( );
        jpanel.setLayou t(null);
        button.setBound s(200,300,70,40 );
        con.setSize(500 ,600);
        jpanel.setSize( 1000,800);
        final int l= jpanel.getHeigh t();
        final int m=jpanel.getWid th();
        Canvas canvas=new Canvas();

        jpanel.add(butt on);

        con.setVisible( true);
        jpanel.setDoubl eBuffered(true) ;
        jpanel.setPrefe rredSize(new Dimension(500,6 00));
        Point location=new Point();


        System.out.prin tln("Panel Size"+ jpanel.getSize( ));
        System.out.prin tln("panel height----------"+jpanel.getHei ght()+"Panel width-------------"+jpanel.getWid th());
        con.add(jpanel, BorderLayout.NO RTH);


        try {
        graph = new GraphMLReader() .readGraph("\\J avaApplicationS wing\\graph.xml ");
        } catch (DataIOExceptio n e ) {
        e.printStackTra ce();
        System.err.prin tln("Error loading graph. Exiting...");
        System.exit(1);
        }




        // nodes and edges are accessible as "graph.node s" and "graph.edge s"
        vis = new Visualization() ;
        vis.add("graph" , graph);

        vis.setInteract ive("graph.edge s", null, false);

        // -- 3. the renderers and renderer factory ---------------------------


        r = new LabelRenderer(" name");
        r.setRoundedCor ner(8, 8); // round the corners
        ShapeRenderer sh=new ShapeRenderer() ;
        sh.star(2,3,4);
        sh.setBaseSize( 4);

        // return our name label renderer as the default for all non-EdgeItems
        // includes straight line edges for EdgeItems by default
        vis.setRenderer Factory(new DefaultRenderer Factory(r));
        d = new Display(vis);

        // -- 4. the processing actions ---------------------------------------



        int[] palette = new int[] {
        ColorLib.rgb(25 5,180,180), ColorLib.rgb(19 0,190,255)

        };

        // map nominal data values to colors using our provided palette
        DataColorAction fill = new DataColorAction ("graph.node s", "gender",
        Constants.NOMIN AL, VisualItem.FILL COLOR, palette);


        ColorAction text = new ColorAction("gr aph.nodes",
        VisualItem.TEXT COLOR, ColorLib.gray(0 ));

        if(text.equals( "sriniwas") )
        {
        new ColorAction("gr aph.nodes",Visu alItem.TEXTCOLO R, ColorLib.green( 240));
        }
        ColorAction edges = new ColorAction("gr aph.edges",
        VisualItem.STRO KECOLOR, ColorLib.gray(2 00));


        color = new ActionList();
        color.add(fill) ;

        color.add(text) ;
        color.add(edges );
        int aa;
        for(int i=0;i<color.siz e();i++){


        System.out.prin tln("sdhfshdfhs f" +i);
        }

        layout = new ActionList(Acti vity.INFINITY);
        layout.add(new ForceDirectedLa yout("graph"));
        layout.add(new RepaintAction() );





        vis.putAction(" color", color);
        vis.putAction(" layout", layout);


        // -- 5. the display and interactive controls -------------------------
        d = new Display(vis);






        // d.setSize(1000, 600); // set display size


        d.addControlLis tener(new DragControl());
        d.addControlLis tener(new PanControl());
        d.addControlLis tener(new ZoomControl());
        d.addControlLis tener(new FrameFocusContr ol());
        // d.addControlLis tener(new ToolTipControl( ){


        //d.addControlLis tener(new DragSource());


        // -- 6. launch the visualization -------------------------------------

        jpanel.add(d);
        vis.run("color" );
        vis.run("layout ");




        button.addActio nListener(new ActionListener( ){
        public void actionPerformed (ActionEvent e){
        if(e.getSource( )==button){
        try{




        jpanel.setSize( new Dimension(l*10, m*10));
        System.out.prin tln("Panel Hieght"+jpanel. getHeight());
        System.out.prin tln("Panel width"+jpanel.g etWidth());
        Image img =d.getOffscreen Buffer();
        img.getSource() ;
        System.out.prin tln("A fter increase Panel Size"+ jpanel.getSize( ));
        fileOutPutStrea m=new FileOutputStrea m("c:/sri/img.jpg");
        d.saveImage(fil eOutPutStream," jpg",2.6);
        fileOutPutStrea m.flush();
        fileOutPutStrea m.close();

        System.out.prin tln("------------------"+jpanel.getHei ght());
        }catch(IOExcept ion ex){ex.printSta ckTrace();}

        }
        }
        });

        }



        }


        public class DrawGrahpDemo{
        public static void main(String Arg[]){

        DrawGrahp drawGraph=new DrawGrahp();

        drawGraph.setVi sible(true);
        drawGraph.setSi ze(500,600);
        drawGraph.setDe faultCloseOpera tion(JFrame.EXI T_ON_CLOSE);

        }
        }


        it's very importtant for me, plz help me.

        Comment

        Working...