import javax.media.*;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class test implements Runnable{
Thread timer;
Image img = null;
java.awt.image.BufferedImage ssimg = null;
JFrame frame =null;
Player player = null;
public test()
{
ini();
}
public void ini()
{
//USBカメラとの接続
try{
frame = new JFrame("USB-Camera");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
player = Manager.createRealizedPlayer(new MediaLocator("vfw://0"));
frame.setBounds(50, 50, 320, 240);
frame.getContentPane().add(player.getVisualComponent());
frame.setVisible(true);
player.start();
}catch(Exception e){};
//タイマースタート
timer = new Thread(this);
timer.start();
}
// 実行関数
public void run()
{
//カウンタ
int i=0;
//無限ループ
do{
//600秒休憩
try{ timer.sleep(600000);}catch(InterruptedException e){}
i++;
//画像をバファードイメージに入れる
FrameGrabbingControl frameGrabber = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = frameGrabber.grabFrame();
BufferToImage b2i = new BufferToImage((VideoFormat) buf.getFormat());
img = b2i.createImage(buf);
ssimg = new java.awt.image.BufferedImage( 320, 240 ,img.SCALE_SMOOTH );
Graphics g = null;
g = ssimg.getGraphics() ;
g.drawImage(img, 0, 0, Color.white, null) ;
//保存ファイル名の作成
String fname = ""+i;
while(true){if( fname.length() < 5){ fname = "0" + fname; }else{break;}}
fname = "Date"+CalendarToString()+"-No"+ fname;
//画像に文字を記入
g.setColor( java.awt.Color.red );
g.drawString( fname , 5 , 235 );
//ファイルに保存
// savePng(ssimg,fname);
saveJpg(ssimg,fname);
saveJpg(ssimg,"image");
// System.exit(0);
}while(true);
}
//PNG形式で保存
public void savePng(java.awt.image.BufferedImage ssimg ,String fname )
{
try {
java.io.File f = new java.io.File( fname + ".png" );
javax.imageio.ImageIO.write( ssimg , "png", f );
f=null;
}catch (Exception e) { e.printStackTrace(); }
}
//JPG形式で保存
public void saveJpg(java.awt.image.BufferedImage ssimg ,String fname )
{
try {
java.io.File f = new java.io.File( fname + ".jpg" );
javax.imageio.ImageIO.write( ssimg , "jpg", f );
f=null;
}catch (Exception e) { e.printStackTrace(); }
}
//現在の時刻を示す文字列を作成
public String CalendarToString()
{
String stmp = "";
Calendar c = Calendar.getInstance(); //一時使用カレンダの作成
int yr = c.get(Calendar.YEAR); int mn = c.get(Calendar.MONTH);
int dy = c.get(Calendar.DATE); int hr = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE); int sec= c.get(Calendar.SECOND);
String nowstring = Integer.toString(yr);
stmp = Integer.toString( mn+1 ); if( stmp.length() < 2){ stmp = "0" + stmp; } nowstring = nowstring + stmp;
stmp = Integer.toString( dy ); if( stmp.length() < 2){ stmp = "0" + stmp; } nowstring = nowstring + stmp;
stmp = Integer.toString( hr ); if( stmp.length() < 2){ stmp = "0" + stmp; } nowstring = nowstring + stmp;
stmp = Integer.toString( min ); if( stmp.length() < 2){ stmp = "0" + stmp; } nowstring = nowstring + stmp;
stmp = Integer.toString( sec ); if( stmp.length() < 2){ stmp = "0" + stmp; } nowstring = nowstring + stmp;
//+Integer.toString(dy)
// +Integer.toString(hr)+Integer.toString(min)+Integer.toString(sec);
c= null;
return nowstring;
}
public static void main(String args[]) throws Exception {
test t = new test();
}
} |