Connecting Tech Pros Worldwide Forums | Help | Site Map

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

Newbie
 
Join Date: Jan 2008
Posts: 4
#1: Jan 7 '08
i want to save my prefuse visualization graph as jpeg image,plz help me with java code,how will i do it.

BigDaddyLH's Avatar
Moderator
 
Join Date: Dec 2007
Location: Kelowna, BC Canada
Posts: 1,212
#2: Jan 7 '08

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


Quote:

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:

Expand|Select|Wrap|Line Numbers
  1. boolean success = ImageIO.write(bufferedImage, "jpeg", file);
Newbie
 
Join Date: Jan 2008
Posts: 4
#3: Jan 10 '08

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


Quote:

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:

Expand|Select|Wrap|Line Numbers
  1. boolean success = ImageIO.write(bufferedImage, "jpeg", file);


Hi Frnd,

m using prefuse visulation,it's have one display class and this class have one saveImage(outPutStream, 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(visualization);
fileOutPutStream=new FileOutputStream("c:/sri/img.jpg");
d.saveImage(fileOutPutStream,"jpg",2.6);

plz if u can do some help me, tht plz do it
it's very important for me.
Newbie
 
Join Date: Jan 2008
Posts: 4
#4: Jan 10 '08

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


Hi Frnd's,

m using prefuse visulation,it's have one display class and this class have one saveImage(outPutStream, 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.se.impl.orbutil.graph.Node;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.dnd.DragSource;
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.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import javax.crypto.NullCipher;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.border.Border;

import prefuse.Constants;
import prefuse.Display;
import prefuse.Visualization;
import prefuse.action.Action;
import prefuse.action.ActionList;
import prefuse.action.RepaintAction;
import prefuse.action.assignment.ColorAction;
import prefuse.action.assignment.DataColorAction;
import prefuse.action.layout.graph.ForceDirectedLayout;
import prefuse.activity.Activity;
import prefuse.activity.ActivityAdapter;
import prefuse.activity.ActivityListener;
import prefuse.controls.DragControl;
import prefuse.controls.PanControl;
import prefuse.controls.ToolTipControl;
import prefuse.controls.ZoomControl;
import prefuse.controls.FocusControl;
import prefuse.controls.DragControl;
import prefuse.data.Graph;
import prefuse.data.Table;
import prefuse.data.Tuple;
import prefuse.data.io.DataIOException;
import prefuse.data.io.GraphMLReader;
import prefuse.data.io.GraphWriter;
import prefuse.data.tuple.TupleSet;
import prefuse.render.DefaultRendererFactory;
import prefuse.render.LabelRenderer;
import prefuse.render.ShapeRenderer;
import prefuse.util.ColorLib;
import prefuse.util.force.DragForce;
import prefuse.visual.NodeItem;
import prefuse.visual.VisualItem;
import javax.swing.*;
import java.awt.Container;
import java.io.FileInputStream;
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 FileOutputStream fileOutPutStream=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.setLayout(null);
button.setBounds(200,300,70,40);
con.setSize(500,600);
jpanel.setSize(1000,800);
final int l= jpanel.getHeight();
final int m=jpanel.getWidth();
Canvas canvas=new Canvas();

jpanel.add(button);

con.setVisible(true);
jpanel.setDoubleBuffered(true);
jpanel.setPreferredSize(new Dimension(500,600));
Point location=new Point();


System.out.println("Panel Size"+ jpanel.getSize());
System.out.println("panel height----------"+jpanel.getHeight()+"Panel width-------------"+jpanel.getWidth());
con.add(jpanel,BorderLayout.NORTH);


try {
graph = new GraphMLReader().readGraph("\\JavaApplicationSwing\ \graph.xml");
} catch (DataIOException e ) {
e.printStackTrace();
System.err.println("Error loading graph. Exiting...");
System.exit(1);
}




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

vis.setInteractive("graph.edges", null, false);

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


r = new LabelRenderer("name");
r.setRoundedCorner(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.setRendererFactory(new DefaultRendererFactory(r));
d = new Display(vis);

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



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

};

// map nominal data values to colors using our provided palette
DataColorAction fill = new DataColorAction("graph.nodes", "gender",
Constants.NOMINAL, VisualItem.FILLCOLOR, palette);


ColorAction text = new ColorAction("graph.nodes",
VisualItem.TEXTCOLOR, ColorLib.gray(0));

if(text.equals("sriniwas"))
{
new ColorAction("graph.nodes",VisualItem.TEXTCOLOR, ColorLib.green(240));
}
ColorAction edges = new ColorAction("graph.edges",
VisualItem.STROKECOLOR, ColorLib.gray(200));


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

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


System.out.println("sdhfshdfhsf" +i);
}

layout = new ActionList(Activity.INFINITY);
layout.add(new ForceDirectedLayout("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.addControlListener(new DragControl());
d.addControlListener(new PanControl());
d.addControlListener(new ZoomControl());
d.addControlListener(new FrameFocusControl());
// d.addControlListener(new ToolTipControl(){


//d.addControlListener(new DragSource());


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

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




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




jpanel.setSize(new Dimension(l*10,m*10));
System.out.println("Panel Hieght"+jpanel.getHeight());
System.out.println("Panel width"+jpanel.getWidth());
Image img =d.getOffscreenBuffer();
img.getSource();
System.out.println("A fter increase Panel Size"+ jpanel.getSize());
fileOutPutStream=new FileOutputStream("c:/sri/img.jpg");
d.saveImage(fileOutPutStream,"jpg",2.6);
fileOutPutStream.flush();
fileOutPutStream.close();

System.out.println("------------------"+jpanel.getHeight());
}catch(IOException ex){ex.printStackTrace();}

}
}
});

}



}


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

DrawGrahp drawGraph=new DrawGrahp();

drawGraph.setVisible(true);
drawGraph.setSize(500,600);
drawGraph.setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE);

}
}


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