JAVA代码如何调用客户端摄像头首先到sun下载最新的jmf,然后安装 。
然后 , 说一下需求
1.用摄像头拍照
2.在文本框输入文件名
3.按下拍照按钮 , 获取摄像头内的图像
4.在拍下的照片上有一红框截取固定大小的照片 。
5.保存为本地图像为jpg格式,不得压缩画质
技术关键,相信也是大家最感兴趣的部分也就是如何让一个摄像头工作,并拍下一张照片了 。
利用jmf , 代码很简单:
//利用这三个类分别获取摄像头驱动,和获取摄像头内的图像流,获取到的图像流是一个swing的component组件类
publicstaticplayerplayer=null;
privatecapturedeviceinfodi=null;
privatemedialocatorml=null;
//文档中提供的驱动写法,为何这么写我也不知:)
stringstr1="vfw:logitechusbvideocamera:0 ";
stringstr2="vfw:microsoftwdmimagecapture(win32):0 ";
di=capturedevicemanager.getdevice(str2);
ml=di.getlocator();
try
{
player=manager.createrealizedplayer(ml);
player.start();
componentcomp;
if((comp=player.getvisualcomponent())!=null)
{
add(comp,borderlayout.north);
}
}
catch(exceptione)
{
e.printstacktrace();
}
接下来就是点击拍照,获取摄像头内的当前图像 。
代码也是很简单:
privatejbuttoncapture;
privatebufferbuf=null;
privatebuffertoimagebtoi=null;
privateimagepanelimgpanel=null;
privateimageimg=null;
privateimagepanelimgpanel=null;
jcomponentc=(jcomponent)e.getsource();
if(c==capture)//如果按下的是拍照按钮
{
framegrabbingcontrolfgc=(framegrabbingcontrol)player.getcontrol( "javax.media.control.framegrabbingcontrol ");
buf=fgc.grabframe();//获取当前祯并存入buffer类
btoi=newbuffertoimage((videoformat)buf.getformat());
img=btoi.createimage(buf);//showtheimage
imgpanel.setimage(img);
}
保存图像的就不多说了,以下为示例代码
bufferedimagebi=(bufferedimage)createimage(imgwidth,imgheight);
graphics2dg2=bi.creategraphics();
g2.drawimage(img,null,null);
fileoutputstreamout=null;
try
{
out=newfileoutputstream(s);
}
catch(java.io.filenotfoundexceptionio)
{
system.out.println( "filenotfound ");
}
jpegimageencoderencoder=jpegcodec.createjpegencoder(out);
jpegencodeparamparam=encoder.getdefaultjpegencodeparam(bi);
param.setquality(1f,false);//不压缩图像
encoder.setjpegencodeparam(param);
try
{
encoder.encode(bi);
out.close();
}
catch(java.io.ioexceptionio)
{
system.out.println( "ioexception ");
}
把.jar文件导入 。下载了jmf后需要安装,安装后你的那个jmf目录下就会有一个lib文件夹里面有.jar文件,然后打开eclipse,右键选择你的工程-〉属性-〉javabuildpath- library-〉addexternaljars找到你的jmf目录下lib的那个文件夹然后选中那些文件导入就ok了 。
然后利用工具提供的导入文件帮助,一个一个导就OK了
通过文字搜索图片 java代码实现及说明import ja.io.*;
//获取文件夹内容
public class getthing
{
public static void main(String[] args) throws Exception
{
System.out.println(welstr);
listFile(new File("e:\\aa")); //想要搜索的路径
}
public static void listFile(File file) throws Exception
{
if(file.isFile())
{
//输出的是完整的文件夹内文件的路径
System.out.println("File :" file.getAbsolutePath());
//01.jpg就是你要找的图片
if (file.getAbsolutePath().endsWith("01.jpg"))
System.out.println("有搜索的图片");
}
else
{
System.out.println("Dir :" file.getAbsolutePath());
File[] files =file.listFiles();
for(int i=0;ifiles.length;i)
{
listFile(files[i]);
System.out.println("回车");
}
}
}
}
1 首先确定你要搜索的目录
2 要搜索的关键字 如“花”
3 只搜索图片类型 .jpg .gif .png .bmp之类的
4 在文本框里获得搜索的关键字
5 取得要搜索目录下的所有图片类型的名字
6 用关键字和取得的文件名一一进行对比
7 若有关键字 记录该图片的名字
8 若都没关键字 表示无该名字的图片
9 空白区域你可以用一个窗体来表示
10 把搜索到的图片都显示在这个窗体 。
java截取图片呵呵,很明确的告诉你:可以!
代码半小时后出来?。。?
……
终于出来了(呵呵,好像超过了半小时哈)且看代码:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JApplet;
public class Test extends JApplet{
String addrs="F:\\images\\mm.bmp";//改成自己的图片路径
BufferedImage mm,child;
CutImage ci;
public Test(){
try {
mm=ImageIO.read(new File(addrs));
} catch (IOException e) {
System.out.println("图片读取失败!");
e.printStackTrace();
}
ci=new CutImage(mm);
child=ci.getChildImage(50, 0, 150, 220);
}
public void init(){
}
public void paint(Graphics g){
g.setColor(Color.red);
g.drawString("原图:",0,10);
g.drawImage(mm, 20,10,this);
g.drawString("ci.getChildImage(50, 0, 150, 220)截取后的图片",mm.getWidth() 30,10);
g.drawImage(child, mm.getWidth() 50,20,this);
}
}
import java.awt.Image;
import java.awt.image.BufferedImage;
public class CutImage {
private BufferedImage img;
private BufferedImage child;
public CutImage(){
}
public CutImage(BufferedImage im){
img=im;
}
public CutImage(Image im){
img=(BufferedImage)im;
}
public void setImg(BufferedImage img) {
this.img = img;
}
public BufferedImage getChildImage(int x,int y,int width,int height) {
int cw=width;
int ch=height;
int pw=img.getWidth();
int ph=img.getHeight();
if(pwx width){
System.out.println("给出的参数超出原图片的范围!程序会自动减小宽度或高度");
cw=pw-x;
}
if(phy height){
System.out.println("给出的参数超出原图片的范围!程序会自动减小宽度或高度");
ch=ph-y;
}
child=new BufferedImage(cw,ch,BufferedImage.TYPE_INT_ARGB );
for(int i=0;ich;i){
for(int j=0;jcw;j){
child.setRGB(j, i, img.getRGB(x j, y i));
}
}
return child;
}
}
呵呵,希望楼主能够满意哦,如果你愿意的话,稍微改一下代码就可以把截取的图片child报春到你的电脑上了 。下面程序的运行效果吧!
java中如何用鼠标点击截取一张图片的某部分(希望有具体代码)DivImageByMouse是个JPanel子类,把main去掉,add到别的容器下也可以正常使用,是按照鼠标移动取的 , 要按200*200的取要稍微改动一下
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class DivImageByMouse extends JPanel{
BufferedImage image=null;
int x1,y1,x2,y2;
publicDivImageByMouse(File file){
super();
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) {
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
int x=x1x2?x1:x2;
int y=y1y2?y1:y2;
int w=(x1x2?x1:x2)-x;
int h=(y1y2?y1:y2)-y;
Image image=DivImageByMouse.this.getImageByClip(x, y, w, h);
setClipboardImage2(image);
x1=y1=x2=y2=0;
JOptionPane.showMessageDialog(DivImageByMouse.this,"图片已保存到系统粘贴板!","图片已保存",JOptionPane.INFORMATION_MESSAGE);
DivImageByMouse.this.repaint();
}
});
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e) {
x2=e.getX();
y2=e.getY();
DivImageByMouse.this.repaint();
}
});
try {
image=ImageIO.read(file);
} catch (IOException e) {
System.out.println("输入文件不是一个图片文件!");
}
}
public Image getImage(){
return image;
}
public Image getImageByClip(int x,int y,int w,int h){
int rgbs[]=new int[w*h];
rgbs=image.getRGB(x,y, w, h, rgbs,0,w);
BufferedImage tmpImage=new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
tmpImage.setRGB(0, 0, w, h, rgbs,0,w);
return tmpImage;
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(image,0,0,this);
System.out.println("(" x1 "," y1 ")(" x2 "," y2 ")");
if(x1==0y1==0x2==0y2==0) return;
System.out.println("rect");
int x=x1x2?x1:x2;
int y=y1y2?y1:y2;
int w=(x1x2?x1:x2)-x;
int h=(y1y2?y1:y2)-y;
g.setColor(Color.blue);
g.drawRect(x, y, w, h);
}
protected static void setClipboardImage2(final Image image) {
Transferable trans = new Transferable(){
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { DataFlavor.imageFlavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(isDataFlavorSupported(flavor))
return image;
throw new UnsupportedFlavorException(flavor);
}
};
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);
}
public static void main(String args[]){
JFrame jf=new JFrame("");
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setBounds(50,50,1024,768);
jf.add(new DivImageByMouse(new File("e:\\109.jpg")));
jf.add(new JButton(""),"North");
jf.setVisible(true);
}
}
【JAVA抓拍图片代码 java调用图片代码】关于JAVA抓拍图片代码和java调用图片代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 快手带货直播推广引流技巧,快手带货直播推广引流技巧有哪些
- 小程序外卖劵怎么用券购买,小程序外卖平台需要的资质
- 关于postgresql启动文件的信息
- 速亨U盘音乐怎么打不开,速晟u盘
- go语言易学 go语言值得学 知乎
- 公众号文章素材在哪找,公众号文章素材在哪找到
- PPT如何制作动态画卷,ppt如何制作动态画卷图片
- 小程序书画加框怎么弄,小程序书画加框软件
- linux中格式化命令行 格式化 linux