请问传输并显示图像的快速方法!!急切烦请大家给些意见啊!!急!!

06-01-24 naturer

请问知道一个图片的URL后,如何将写个applet,让它在applet中显示出来,速度要快。我以前用的是:

applet访问servlet,由servlet根据url取得图片的ImageIcon对象后,返回给applet,在applet中再得到Image对象,

并再paint方法中利用drawImage方法画出。

servlet中的主要代码如下:

    //根据URL取图片 
    public ImageIcon getImageIcon2(String urlStr)
    {
            try
           {
	System.out.println("getIcon Begin");
	ImageIcon toII=new ImageIcon(new URL(urlStr));
	System.out.println("getIcon End");
	
               return toII;
           }
           catch(Exception e)
          {
	System.out.println("getIcon error");
	return null;
          }
    }

//在servlet中发送ImageIcon对象的方法
	public void doPost(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException
	{
	        ObjectInputStream in=null;
                        ObjectOutputStream out=null;
		
	        ImageIcon ii=null;

	        try
	      {
		in=new ObjectInputStream(request.getInputStream());
		out=new ObjectOutputStream(response.getOutputStream());
                               
                                
                                ii=getImageIcon2("http://xxxx/1.jpg");     //参数是一个图片的url,位于其它机器上
                     //发送图像			
                     out.writeObject(ii);
               }
                      catch(Exception e)
                      . . .. . 

Applet中访问servlet的主要代码如下:

try {
            URL url1 = new URL(IMGSERVERADDR);         //参数是被访问的servlet的url
            conn = url1.openConnection();
            //使浏览器不缓存这个URL
            conn.setUseCaches(false);
            //允许接收服务器发来的数据
        conn.setDoInput(true);
            //允许发送数据到服务器
        conn.setDoOutput(true);

            //发送请求地图的字符串
        objOutputS = new ObjectOutputStream(conn.getOutputStream());
            objOutputS.writeObject(str);       

            //启动ExecuteRequest线程以执行接收并画出图像的任务
        ExecuteRequest0809 exeR = new ExecuteRequest0809();
            Thread exec = new Thread(exeR);
            exec.start();
            .. .. ..

我在windows的IE中输入图片的url后,很快就可以得到图片,而我的程序得到图片的时间很长,

是前者的8~10倍。请问,有什么方法,可以让取图的速度快些呢?如果能够边取边显示就好了,

及先显示到来的数据,刷新显示,这样就感觉上快些,请大家多多帮忙!!!不胜感激!!

banq
2006-02-07 17:51

IE浏览器可以直接显示图片,它只要调用一个专门显示图片的URL就可以,applet专门显示图片除非是保密防止拷贝才使用。

你可以开启多个线程,将图片分块同时读取,就象下载软件一样。