5 07, 2007

ÈçºÎÓÃservletÔÚ¿Í»§¶ËÉú³ÉÒ»¸öºÏ³ÉͼƬ(ת)

ʵ¼ÊÉÏÎÒÃÇ¿ÉÒÔÔÚ¿Í»§¶ËÉú³ÉÒ»¸öÓÃgraphics»­µÄͼ
»òÕßÒ²¿ÉÒÔÔÚ¿Í»§¶Ëת·¢Ò»¸ö´Ó·þÎñÆ÷È¡À´µÄͼƬ
µ«ÈçºÎ¼¯³É¶à¸ögif,jpgͼƬÉú³ÉÒ»¸ö´óµÄͼƬ£¬Í¬Ê±»¹ÓÐ×Ô¼º»­µÄͼ¾Í²»ÈÝÒ×ÁË£¬
±ÈÈ磺

ÎÒÉÏÉÏÐÇÆÚÓöµ½ÁËÕâ¸öÀ§ÄÑ£¬ËùÐÒ°ÑÕâ¸öÎÊÌâ½â¾öÁË¡£´ó¼Ò¶¼ÊdzÌÐòÔ±£¬¸÷ÖÖapiÎÒÒ²²»ÓýâÊÍÁË£¬¾Í°Ñ´úÂëÌù³öÀ´ºÃÁË£¬ÎÒ»áÔÚ±ØÒªµÄµØ·½¼ÓÉÏ×¢ÊÍ¡£
×ܹ²ÓÐÈý¸öÎļþ
showImage-------------------------------servlet
PdrawInstImage ------------------------·þÎñÆ÷¶ËÔËÐеÄjava»­Í¼³ÌÐò
servlet
public class showImage extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{

try{
String servername = req.getServerName();
String port = ""+req.getServerPort();
WorkflowConnector connector = new WorkflowConnector();
connector.connect("t3://"+servername+":"+port, null, null);
String instProcessId = req.getParameter("ipid");

InstProcessInfo instInfo = connector.getAdmin().getInstProcessInfo(instProcessId);
ProcessInfo processInfo = connector.getDefinition().getProcess(instInfo.getDefProcessId());
PDrawInstImage imgCreator = new PDrawInstImage(processInfo,instInfo);
imgCreator.drawAll();
BufferedImage bufferedImage = imgCreator.getBufferedImage();
res.setContentType("image/jpeg"); //ÉèÖ÷µ»ØµÄÎļþÀàÐÍ
OutputStream out=res.getOutputStream(); //µÃµ½Ïò¿Í»§¶ËÊä³ö¶þ½øÖÆÊý¾ÝµÄ¶ÔÏó
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bufferedImage);
out.close();
}
catch(Exception e) //´íÎó´¦Àí
{
e.printStackTrace();
PrintWriter toClient = res.getWriter(); //µÃµ½Ïò¿Í»§¶ËÊä³öÎı¾µÄ¶ÔÏó
res.setContentType("text/html;charset=gb2312");
toClient.write("ÎÞ·¨´ò¿ªÍ¼Æ¬!");
toClient.close();
}

}
}

public class PDrawInstImage {
/** ͼÐλº´æ */
static BufferedImage bufferedImage;
/** »­Í¼½Ó¿Ú */
Graphics2D big;
·ÅÔÚ·þÎñÆ÷¶ËµÄjava³ÌÐò
/**
* ´´½¨Í¼Ðλº´æ¡£
*/
public void creatBufferImage(){
bufferedImage = new BufferedImage((int)jpgDimension.getWidth(),(int)jpgDimension.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
big = bufferedImage.createGraphics();
}
/**
* ·µ»ØÍ¼ÐÎÊý¾Ý»º³åÇø¡£
*/
public BufferedImage getBufferedImage(){
return this.bufferedImage;
}
Õâ¸ö·½·¨ÀïÃæ£¬²ÉÓÃÒ»¸ö¿ÕµÄframe×÷ΪͼÏñ¹Û²ìÆ÷£¬Ò»¸öMediaTracker×÷Ϊ¸¨Öú¸ú×Ù£¬²»ÕâôÓúÃÏó»¹Õæ²»ÐУ¬¾ßÌåÔ­Òò£¬ÔÙ¿´µãÊ飬ÎÒÒ²ÐíÄÜÃ÷°×
private void drawTipImage(byte[] bytes){
try{
Frame frame = new Frame();
frame.addNotify();
MediaTracker mt = new MediaTracker(frame);// frame acts as an ImageObserver
Image image = Toolkit.getDefaultToolkit().createImage(bytes);
mt.addImage(image, 0);
mt.waitForAll();
int tipW = image.getWidth(frame);
int tipH = image.getHeight(frame);
int xx = X +(WIDTH - tipW)/2;
int yy = Y +(HEIGHT- tipH)/2;
big.drawImage(image,xx,yy,frame);
}catch(Exception e){
e.printStackTrace();
}
}
private void drawShape(){
int minorType = activityInfo.getMinorType();
drawTipImage(ImageFactory.getImageData(minorType));
}
public static byte[] getImageData(int minorType){
byte[] bytes = null;
try
{
URL iconURL = getResource(getActivityName(minorType));
if(iconURL != null)
{
InputStream is = iconURL.openStream();
int avail = is.available();
bytes = new byte[avail];
is.read(bytes,0,avail);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return bytes;
}
ÌØ±ðÇ¿µ÷£¬imageʵ¼ÊÉÏ¿ÉÒÔÖ±½Óͨ¹ý
Image image = Toolkit.getDefaultToolkit().getImage(
display.imageFile);
ÕâÖÖ·½Ê½»ñµÃ£¬È»¶øÎÒÔÚʵ¼ÊÔËÐÐÖУ¬È´Ò»Ö±µÃ²»µ½Í¼Æ¬£¬ÎÒÏ룬javaÔÚÕâ¿éʵÐÐÁË¡°¶èÐÔ»úÖÆ¡±£¬»­Í¼ÊÇÒªµ½Õ滭ʱ²Å¼ÓÔØ£¬ÓÖ²»Ö§³Ö·Ç±¾µØµ÷Óã¬ËùÒÔͨ¹ýservlet¾ÍÎÞ·¨µ÷Óõ½Í¼Æ¬×ÊÔ´£¬¾ßÌåϸ½ÚÎÒ»¹ÊDz»Ì«Çå³þ£¬µ«²»¹ÜÔõô˵µÄ»»Ò»ÖÖ·½Ê½£¬ËùÒÔÎÒÃÇÓÃÏÂÃæµÄ·½·¨£¬ÏÈÔÚ±¾µØ·þÎñÆ÷»ñȡͼƬµÄÊý×éÐÅÏ¢£¬È»ºó°ÑËû×é×°³ÉͼƬ¡£
Õâ¸ö·½·¨Ö÷ÒªÊÇÓÃÀ´
public byte[] getImageData(int minorType){
byte[] bytes = null;
try
{
URL iconURL = getResource(getActivityName(minorType));
if(iconURL != null)
{
InputStream is = iconURL.openStream();
int avail = is.available();
bytes = new byte[avail];
is.read(bytes,0,avail);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return bytes;
}
}
¡¡
×îлظ´
·¢±íÆÀÂÛ













Bold Italic Link