java生成JPEG 图像文件
2024-07-13 09:54:57
供稿:网友
java生成jpeg 图像文件. 代码如下:
我的这段代码主要提供给我自己编写的工作流设计器对象使用(eworkflowcontrol ewf), eworkflowcontrol 继承了jcomponent重载了绘制的方法,如果有兄弟需要用到这个功能的,只需要将eworkflowcontrol 替换成自己的jcomponent对象即可。
/** 使当前输入的工作流对象上的图形生成jpeg 图像文件.
* 每一个节点对应一个图片.
* 建立的文件存放在jar 文件文件夹下,并创建一个子文件夹
* 以节点的名称为文件夹的名称.
* @param ewf 需要生成jpeg图片文件的工作流对象.
* @return boolean: 返回一个布尔值,表示是否保存成功.
*/
public static boolean buildthepictrue(eworkflowcontrol ewf)
{
//modify by mw
//列出流程中所有的node节点.
//分别设置这些节点为选中状态,并存成图片(名称为节点的流水号)
inode rootnode = ewf.getnote(); rectangle bounds = ewf.getbounds();
inode[] children = rootnode.getnodechildren();
int childrenlen = rootnode.getnodechildcount();
string nodenumber = null;
boolean flag = true;
//消除所有节点得选中状态.
for(int j = 0; j < childrenlen; j++) {
children[j].setselect(false); }
//生成总图(我是一个节点一个图像)
try {
java.awt.image.bufferedimage image; image = new java.awt.image.bufferedimage(bounds.width, bounds.height, java.awt.image.bufferedimage.type_int_rgb);
graphics g = image.getgraphics(); g.setcolor(color.white);
g.fillrect(0, 0, bounds.width, bounds.height);
ewf.paintcomponent(g);
string path = system.getproperty("user.dir") +system.getproperty("file.separator") +ewf.getworkflowname() +"["+ewf.getworkflowcode()+"]";
file fd = new file(path);
if (!fd.exists()) {
fd.mkdirs();
}
string filepath = path + system.getproperty("file.separator")+"0.jpeg";
file imgfile = new file(filepath);
fileoutputstream fos = new fileoutputstream(imgfile);
bufferedoutputstream bos = new bufferedoutputstream(fos);
jpegimageencoder encoder = jpegcodec.createjpegencoder(bos);
encoder.encode(image); bos.close();
}
catch(exception ex) {
flag = false;
}
//到此第一个图像已经生成!
//循环生成图片
for(int i = 0; i < childrenlen; i++)
{
nodenumber = children[i].getnodenumber();
if (nodenumber == null)
{
flag = false; continue;
} else {
children[i].setselect(true);
try {
java.awt.image.bufferedimage image; image = new java.awt.image.bufferedimage(bounds.width, bounds.height, java.awt.image.bufferedimage.type_int_rgb);
graphics g = image.getgraphics();
g.setcolor(color.white);
g.fillrect(0, 0, bounds.width, bounds.height);
ewf.paintcomponent(g);
string path = system.getproperty("user.dir") +system.getproperty("file.separator") +ewf.getworkflowname() +"["+ewf.getworkflowcode()+"]";
file fd = new file(path);
if (!fd.exists()) {
fd.mkdirs();
}
string filepath = path + system.getproperty("file.separator")+nodenumber+".jpeg";
file imgfile = new file(filepath);
fileoutputstream fos = new fileoutputstream(imgfile);
bufferedoutputstream bos = new bufferedoutputstream(fos); jpegimageencoder encoder = jpegcodec.createjpegencoder(bos);
encoder.encode(image); bos.close();
children[i].setselect(false);
} catch(exception ex) {
flag = false;
} } }
if (flag) {
new exceptiondialog(pic_save_ok,pic_save_dialog_title, desktopframe.getcurrentinstance(), true).setvisible(true);
} else {
new exceptiondialog(pic_save_error,pic_save_dialog_title, desktopframe.getcurrentinstance(), true).setvisible(true);
}
return flag;
}
本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。