<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • HTML5網頁掃描二維碼

    2018-5-22    seo達人

    如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

    [HTML]代碼

    <!DOCTYPE html>
    <html>
    <head>
        <title>二維碼掃描測試</title>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <style type="text/css">
        html, body {
            height: 100%;
            width: 100%;
            text-align: center;
        }
    </style>
    <script src="../js/jquery-1.11.1.min.js"></script>
    <script>
        //這段代 主要是獲取攝像頭的視頻流并顯示在Video 簽中
        var canvas = null, context = null, video = null;
        window.addEventListener("DOMContentLoaded", function () {
            try {
                canvas = document.getElementById("canvas");
                context = canvas.getContext("2d");
                video = document.getElementById("video");
                var videoObj = { "video": true, audio: false },
                    flag = true,
                    MediaErr = function (error) {
                        flag = false;
                        if (error.PERMISSION_DENIED) {
                            alert('用戶拒絕了瀏覽器請求媒體的權限', '提示');
                        } else if (error.NOT_SUPPORTED_ERROR) {
                            alert('對不起,您的瀏覽器不支持拍照功能,請使用其他瀏覽器', '提示');
                        } else if (error.MANDATORY_UNSATISFIED_ERROR) {
                            alert('指定的媒體類型未接收到媒體流', '提示');
                        } else {
                            alert('系統未能獲取到攝像頭,請確保攝像頭已正確安裝。或嘗試刷新頁面,重試', '提示');
                        }
                    };
                //獲取媒體的兼容代碼,目前只支持(Firefox,Chrome,Opera)
                if (navigator.getUserMedia) {
                    //qq瀏覽器不支持
                    if (navigator.userAgent.indexOf('MQQBrowser') > -1) {
                        alert('對不起,您的瀏覽器不支持拍照功能,請使用其他瀏覽器', '提示');
                        return false;
                    }
                    navigator.getUserMedia(videoObj, function (stream) {
                        video.src = stream;
                        video.play();
                    }, MediaErr);
                }
                else if (navigator.webkitGetUserMedia) {
                    navigator.webkitGetUserMedia(videoObj, function (stream) {
                        video.src = window.webkitURL.createObjectURL(stream);
                        video.play();
                    }, MediaErr);
                }
                else if (navigator.mozGetUserMedia) {
                    navigator.mozGetUserMedia(videoObj, function (stream) {
                        video.src = window.URL.createObjectURL(stream);
                        video.play();
                    }, MediaErr);
                }
                else if (navigator.msGetUserMedia) {
                    navigator.msGetUserMedia(videoObj, function (stream) {
                        $(document).scrollTop($(window).height());
                        video.src = window.URL.createObjectURL(stream);
                        video.play();
                    }, MediaErr);
                } else {
                    alert('對不起,您的瀏覽器不支持拍照功能,請使用其他瀏覽器');
                    return false;
                }
                if (flag) {
                    //alert('為了獲得更準確的測試結果,請盡量將二維碼置于框中,然后進行拍攝、掃描。 請確保瀏覽器有權限使用攝像功能');
                }
                //這個是拍照按鈕的事件,
                $("#snap").click(function () { startPat(); }).show();
            } catch (e) {
                printHtml("瀏覽器不支持HTML5 CANVAS");
            }
        }, false);
        //打印內容到頁面
        function printHtml(content) {
            $(window.document.body).append(content + "<br/>");
        }
        //開始拍照
        function startPat() {
            setTimeout(function () {//防止調用過快
                if (context) {
                    context.drawImage(video, 0, 0, 320, 320);
                    CatchCode();
                }
            }, 200);
        }
        //抓屏獲取圖像流,并上傳到服務器
        function CatchCode() {
            if (canvas != null) {
                //以下開始編 數據
                var imgData = canvas.toDataURL("image/jpeg");
                //將圖像轉換為base64數據
                var base64Data = imgData; //在前端截取22位之后的字符串作為圖像數據
                $.ajax({
                    type: 'post',
                    url: '../ashx/HandlerScan.ashx?method=ParseImage',
                    data: 'ImgData=' + base64Data,
                    dataType: "json",
                    cache: false,
                    timeout: 10000,
                    success: function (mes) {
                        if (mes.code == '1') {
                            alert('未識別二維碼,請重新掃描!');
                        }
                        else {
                            alert(mes.name);
                        }
                    },
                    error: function (err) {
                        alert('掃描失敗' + err);
                    }
                });
            }
        }
    </script>
    <body>
        <div id="support"></div>
        <div id="contentHolder">
            <video id="video" width="320" height="320" autoplay></video>
            <canvas id="canvas" style="display:none; background-color:#F00;" width="320" height="320"></canvas><br/>
            <button id="snap" style="display:none; height:50px; width:120px;">開始掃描</button>
        </div>
    </body>
    </html>  

    [C#后臺]

        public class HandlerScan : IHttpHandler
        {
            private JsonResult js = new JsonResult();
            public void ProcessRequest(HttpContext context)
            {
                string result = string.Empty;
                string method = context.Request.QueryString.ToString();//獲取想要做的操作
                switch (method)
                {
                    case "method=ParseImage":
                        result = ParseImage(context);
                        break;
                    default:
                        break;
                }
                context.Response.ContentType = "text/json";
                context.Response.Write(result);
            }
            private string ParseImage(HttpContext context)
            {
                try
                {
                    string imgStr = context.Request.Params["ImgData"].ToString();
                    imgStr = imgStr.Replace("data:image/jpeg;base64,", "");
                    //整理字符串
                    imgStr = imgStr.Replace(" ", "+");
                    byte[] arr = Convert.FromBase64String(imgStr);
                    MemoryStream ms = new MemoryStream(arr, 0, arr.Length);
                    Bitmap bmp = new Bitmap(ms);
                    //解析圖片
                    Result result = new BarcodeReader().Decode(bmp);
                    if(result == null)
                    {
                        return "{\"code\":1,\"name\":\"\"}";
                    }
                    else
                    {
                        string[] a = result.Text.Split(','); 
                        string str = "{\"code\":0,\"name\":\"" + a[0] + "\"}";
                        return str; 
                    }
                }
                catch (Exception ex)
                {
                    return "{\"code\":1,\"msg\":\"" + ex.Message + "\",\"userName\":\"\"}";
                }
            }
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.skdbbs.com

    存檔

    主站蜘蛛池模板: 亚洲欧美日韩久久精品| 国产精品午睡沙发系列| 无码国产精品一区二区免费式芒果 | 精品久久无码中文字幕| 久久中文精品无码中文字幕| 国产精品久久久久久| 亚洲精品无码永久中文字幕| 久草欧美精品在线观看| 51精品资源视频在线播放 | 亚洲欧美激情精品一区二区| 黑人巨茎精品欧美一区二区| 四虎国产精品免费入口| 国产92成人精品视频免费| 欧美精品videosse精子| 亚洲精品老司机在线观看| 久久精品18| 精品久久久久久久久久久久久久久| 精品亚洲综合在线第一区| 92国产精品午夜福利| 精品亚洲国产成AV人片传媒| 亚洲愉拍99热成人精品热久久| 青青热久久国产久精品| 精品国产亚洲男女在线线电影 | 下载天堂国产AV成人无码精品网站 | 亚洲国产精品无码成人片久久| 欧美成人精品第一区二区三区| 国产在线国偷精品免费看| 国产成人AV无码精品| 思思99热在线观看精品| 欧美精品亚洲精品日韩| 精品亚洲综合在线第一区 | 国产精品免费观看| 国产精品久久波多野结衣| 99久久免费国产精品热| 国产精品你懂的| 亚洲精品人成在线观看| 午夜影视日本亚洲欧洲精品一区| 国产精品一级香蕉一区| 四虎成人欧美精品在永久在线| 2022精品国偷自产免费观看| 99久久精品免费|