⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagedownloader.java

📁 有关嵌入式的摄像头视频采集的论文
💻 JAVA
字号:
/* * ImageDownloader.java * * Created on February 24, 2002, 12:25 AM */import java.net.*;import java.io.*;import java.awt.*;import java.lang.Thread;import java.awt.image.*;import java.util.Vector;/** * * @author  mike morrison */public class ImageDownloader extends Thread {    private Socket socket;    private ImageCanvas imageCanvas = null;    private String host;    private int port;    private boolean done;    private String len_hdr = "content-length: ";    private final String request = "GET / WCS/0.50";    private double maxFPS = 1; // maximum frames per second, defaults to 10    private int timeToWait = 0; //time to wait between image downloads	private Vector chatQueue = new Vector();    /** Creates a new instance of ImageDownloader */    public ImageDownloader(String host, int port, double maxFPS, ImageCanvas ic) {        this.host = host;        this.port = port;        imageCanvas = ic;        setMaxFPS(maxFPS);    }	public void queueChatText(String message)	{		chatQueue.addElement(message);		}    public void setMaxFPS(double maxFPS){        if (maxFPS > 0){            this.maxFPS = maxFPS;            timeToWait = (int)(1000.0/maxFPS);        }    }    public double getMaxFPS(){        return maxFPS;    }    public boolean connect(){        try{            socket = new Socket(host,port);        }catch (IOException e){            e.printStackTrace();            return false;        }        return true;    }    public boolean disconnect(){        done = true;        return true;    }    public boolean isConnected(){        return (!done);    }    public void run(){                done = false;        if(!connect())	{		imageCanvas.couldNotConnect();		imageCanvas.setConnected(ImageCanvas.DISCONNECTED);		imageCanvas.setStartStopText("Start");	}	else	{		imageCanvas.setConnected(ImageCanvas.CONNECTED);        	try{        	    PrintWriter printWriter = new PrintWriter(socket.getOutputStream());        	    InputStream input = socket.getInputStream();        	    BufferedInputStream bufferedInput = new BufferedInputStream(input);        	    //socket.setKeepAlive(true);        	    //socket.setSoTimeout(1000);        	    //socket.setReceiveBufferSize(10000);        	    byte imgSize[] = new byte[4];		    byte header[] = new byte[1024];        	    //int count = 0;        	    long startTime = System.currentTimeMillis();        	    long stopTime  = startTime, decodeStop, downloadStop,prepareStop=0;        	    Image img;        	    while (!done){                	//time the image started being downloaded                	startTime = System.currentTimeMillis();                	printWriter.println(request);			if(chatQueue.size() > 0)			{				System.out.println((String)chatQueue.elementAt(0));				printWriter.println((String)chatQueue.elementAt(0));				chatQueue.removeElementAt(0);			}	                	printWriter.flush();			int i=0;			while((header[i] = (byte)bufferedInput.read()) != -1)			{				//System.out.print((char)header[i]);				if(i>0)				if(header[i] == '\n' && header[i-1] == '\n')					break;				i++;			}			String s = new String(header).toLowerCase();			int start = s.indexOf(len_hdr) + len_hdr.length();			int end = s.indexOf("\n", start);			s = s.substring(start, end);	 		int size = Integer.parseInt(s);                	if (size < 0) break;                	byte imageBytes[] = new byte[size];                	int newSize = 0;                	int totalSize = 0;                	while ((newSize = bufferedInput.read(imageBytes,totalSize,size- totalSize)) != -1){                	    totalSize += newSize;                	    if (totalSize == size) break;                	    wait(10);                	}                	if (totalSize != size){                	    System.out.println("Did not read everything!");                	    break;                	}                	//System.out.println("Download Time: " + (System.currentTimeMillis() - startTime) + "ms");                	img = Toolkit.getDefaultToolkit().createImage(imageBytes);                                	//create and draw the image                	if (imageCanvas !=null) imageCanvas.setImage(img);                	stopTime = System.currentTimeMillis();                	// wait before reqesting another image.                	// to maintain maxFPS                	if ((timeToWait - (stopTime - startTime)) > 0){                	     wait((int) (timeToWait - (stopTime - startTime)));                	}        	    }        	}catch(IOException e){        	    e.printStackTrace();		    imageCanvas.setConnected(ImageCanvas.DISCONNECTED);                    imageCanvas.setStartStopText("Start");        	}finally{        	    disconnect();		    imageCanvas.setConnected(ImageCanvas.STOPPED);		    imageCanvas.setStartStopText("Start");		    try{                	socket.close();        	    }catch (IOException ioe){                	ioe.printStackTrace();        	    }        	}	}    }    public int FourBytesToInt(byte buf[])    {        int i = 0;        int pos = 0;        i += unsignedByteToInt(buf[pos++]) << 0;        i += unsignedByteToInt(buf[pos++]) << 8;        i += unsignedByteToInt(buf[pos++]) << 16;        i += unsignedByteToInt(buf[pos++]) << 24;	return i;    }    public static int unsignedByteToInt(byte b) {       return (int) b & 0xFF;    }    public void wait(int n){        try{            sleep(n);        }catch(InterruptedException e){}    }                public static void main (String args[]){        ImageDownloader downloader = new ImageDownloader(args[1], Integer.parseInt(args[2]), 30, null);        downloader.start();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -