首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用webcam.js转换base64图像时,我得到损坏的图像

当使用webcam.js转换base64图像时,我得到损坏的图像
EN

Stack Overflow用户
提问于 2015-09-15 20:50:50
回答 1查看 794关注 0票数 0

这是我的html和使用webcam.js的javascript。我只是按照https://github.com/jhuckaby/webcamjs介绍了如何使用现有的表单来实现它。

代码语言:javascript
复制
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>WebcamJS Test Page</title>
    <style type="text/css">
        body { font-family: Helvetica, sans-serif; }
        h2, h3 { margin-top:0; }
        form { margin-top: 15px; }
        form > input { margin-right: 15px; }
        #results { float:right; margin:20px; padding:20px; border:1px solid; background:#ccc; }
    </style>
</head>
<body>
    <div id="results">Your captured image will appear here...</div>

    <h1>WebcamJS Test Page</h1>
    <h3>Demonstrates simple 320x240 capture &amp; display</h3>

    <div id="my_camera"></div>

    <!-- First, include the Webcam.js JavaScript Library -->
    <script type="text/javascript" src="../webcam.js"></script>

    <!-- Configure a few settings and attach camera -->
    <script language="JavaScript">
        Webcam.set({
            width: 320,
            height: 240,
            image_format: 'jpeg',
            jpeg_quality: 90
        });
        Webcam.attach( '#my_camera' );

         Webcam.snap( function(data_uri) {
        var raw_image_data = data_uri.replace(/^data\:image\/\w+\;base64\,/, '');
        document.getElementById('mydata').value = raw_image_data;
        document.getElementById('myform').submit();
    } );
    </script>

    <!-- A button for taking snaps -->
     <form id="myform" method="post" action="myscript.php">
        <input id="mydata" type="hidden" name="mydata" value=""/>
     <input type=button value="Take Snapshot" onClick="take_snapshot()">
     <input type="submit" value="submit">
    </form>

    <!-- Code to handle taking the snapshot and displaying it locally -->
    <script language="JavaScript">
        function take_snapshot() {
            // take snapshot and get image data
            Webcam.snap( function(data_uri) {
                // display results in page
                document.getElementById('results').innerHTML = 
                    '<h2>Here is your image:</h2>' + 
                    '<img src="'+data_uri+'"/>';
            } );
        }
    </script>

这是保存图像的myscript.php。我成功地将路径保存在数据库中,但我得到了一个损坏的.jpg文件(文件大小始终为7字节)。

代码语言:javascript
复制
<?php
include 'connect.php';
  $encoded_data = $_POST['mydata'];  // to get the base 64 code image link
  $name = base64_decode($encoded_data); // to convert base 64 code
  $name = date('YmdHis');
$newname="images/".$name.".jpg";
$file = file_put_contents( $newname, file_get_contents('php://input') );
if (!$file) {
    print "Error occured here";
    exit();
}
else
{
    $sql="INSERT INTO image (images) VALUES('$newname')";
    $result=mysqli_query($con,$sql);
    $value=mysqli_insert_id($con);
    $_SESSION["myvalue"]=$value;

}

$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $newname;
print "$url\n";

?>
EN

回答 1

Stack Overflow用户

发布于 2016-05-28 13:16:39

代码语言:javascript
复制
    var binaryImg = atob(base64string);
    var length = binaryImg.length;
    var ab = new ArrayBuffer(length);
    var ua = new Uint8Array(ab);
    for (var i = 0; i < length; i++) {
        ua[i] = binaryImg.charCodeAt(i);
    }

    var blob = new Blob([ab], {
        type: "image/jpeg"
    });enter code here

    var imgFile = new File([blob], 'photo.jpeg', {type: 'image/jpeg'});

现在,您可以使用imgFile向远程服务器发送数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32586588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档