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

naturer 06-01-24

请问知道一个图片的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专门显示图片除非是保密防止拷贝才使用。

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