HTML5在线摄像头拍照上传并保存到服务器

1.//读取视频流
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
if (navigator.getUserMedia)
{
if (navigator.webkitURL)
{
navigator.getUserMedia("video", function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
}, function (error) { alert(error); });
}
else
{
navigator.getUserMedia("video", function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
}, function (error) { alert(error); });
}
}
else
{
alert("navigator.getUserMedia Error");
}

2.拍照上传

function scamera()
     { 
        //拍照
    var ctx = canvas.getContext('2d');
      canvas.width = video.videoWidth;
        canvas.height = video.videoHeight;        
        ctx.drawImage(video, 0, 0,640,480);              
    
    var imgData=canvas.toDataURL(); 
    //alert(imgData);
    var imgData=imgData.substring(22);
    //alert(data);
        
        $.ajax({
    type: "POST",
    url: "FaceServlet",
  data: {"img":imgData},
    success: function(msg){
     
    }
});         
     }


3.在后台servlet接收并保存到服务器     
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String imgData = request.getParameter("img");
        //System.out.println("imgData:"+imgData);

        //保存的图片的名称   
        String fileName =System.currentTimeMillis() + ".png";
        //System.out.println("fileName:"+fileName);
        //获得picture文件夹在tomcat中的绝对路径
        String basePath = request.getSession().getServletContext().getRealPath("/picture/");
        String filePath = basePath;   
        System.out.println("保存图片的地址为:"+filePath);  
        BASE64Decoder decoder = new BASE64Decoder();
//String imageString = "";
try {
byte[] bytes1 = decoder.decodeBuffer(imgData);


ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
BufferedImage image = ImageIO.read(bais);
if (image != null) 
       {     
           //保存图片到指定的目录和文件中             
           ImageIO.write(image, "png", new File(filePath , fileName));   
       }    


} catch (IOException e) {
e.printStackTrace();
}
       


4.HTML代码:

<div><video id="monitor" autoplay></video></div>
<div><canvas id="photo" width="640" higth="480" style="display:none"></canvas></div>
<div><input id="Button" type="button" value="拍照" οnclick="scamera()" /></div>

备注:

保存的图片名称以“png”或“jpg”结尾的会有不同的效果。以“jpg”结尾的,保存下来的图片是红色的,我也不知道为什么。以“png”格式结尾的就是正常的。如果能有朋友告诉我这是为什么?那再完美不过了!

     
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值