Java ile bilgisayarınıza USB portundan bağlı bir kameradan resim almak istiyorsanız, işte size kullanabileceğiniz bir örnek. JMF, Java Image I/O ve Java Advanced Imaging (JAI) ile ilgili daha sonra daha detaylı yazacağım.
import java.io.*;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.imageio.ImageIO;
public class TestQuickCamPro
{
public static void main(String[] args) throws Exception{
// Webcam hangi isimle kayıtlıysa o isimle buluyoruz
CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());
player.start();
// Kameranın başlaması için 2.5 saniye bekle (yoksa img==null oluyor)
Thread.sleep(2500);
System.out.println("Resim yakalanıyor.");
FrameGrabbingControl frameGrabber = (FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
// Bir kare yakala
Buffer buf = frameGrabber.grabFrame();
Image img = (new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
BufferedImage buffImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
g.drawImage(img, null, null);
// Diske JPG olarak kaydet
ImageIO.write(buffImg, "jpg", new File("C:\\webcam.jpg"));
player.close();
player.deallocate();
System.out.println("Bitti.");
}
}
Hiç yorum yok:
Yorum Gönder