Need a help in prefuse visulation graph save as jpeg file | Newbie | | Join Date: Jan 2008
Posts: 4
| |
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.
|  | Site Moderator | | Join Date: Jan 2007 Location: America
Posts: 3,387
| | | re: Need a help in prefuse visulation graph save as jpeg file
Please enclose your posted code in [code] tags (See How to Ask a Question).
This makes it easier for our Experts to read and understand it. Failing to do so creates extra work for the moderators, thus wasting resources, otherwise available to answer the members' questions.
Please use [code] tags in future.
MODERATOR
| | Newbie | | Join Date: Feb 2008
Posts: 1
| | | re: Need a help in prefuse visulation graph save as jpeg file
[quote=sriniwas]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
Hello sriniwas,
I had the same problem and I solved it by creating a new temporary display where I scaled the visualization onto the size of the created display. After this I am able to save a complete image of the visualized graph. The other possibility is to scale your actual display onto the size of your visualization while saving an image and decreasing it after that.
If there are other possibilities I would be glad to read about.
|  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,272 network members.
|