【Demo】HTML5 拍照上傳

本文主要講解 手機瀏覽器 如何拍照 php

爲何會有這個需求

最近作一個項目要用到拍照而後上傳照片,可是網頁拍照通常都是用Flash作的,而咱們主要是H5頁面,若是在微信裏面有權限就能夠經過JSSDK調起攝像頭拍照的。這裏咱們主要說下手機端瀏覽器如何調起攝像頭 css

H5如何打開攝像頭

不須要特別的支持,只須要一行代碼就能夠了 html

<input id="upload" type="file" accept="image/*;" capture="camera" >

如何預覽圖

原理是用js獲取input file的圖像流,而後賦給img標籤的src屬性,而後再設置這個img的css,就能獲得你要的效果了,代碼以下 html5

;
var demo_h5_upload_ops = {
    init:function(){
        this.eventBind();
    },
    eventBind:function(){
        var that = this;
        $("#upload").change(function(){
            var reader = new FileReader();
            reader.onload = function (e) {
                that.compress(this.result);
            };
            reader.readAsDataURL(this.files[0]);
        });
    },
    compress : function (res) {
        var that = this;
        var img = new Image(),
            maxH = 300;

        img.onload = function () {
            var cvs = document.createElement('canvas'),
                ctx = cvs.getContext('2d');

            if(img.height > maxH) {
                img.width *= maxH / img.height;
                img.height = maxH;
            }
            cvs.width = img.width;
            cvs.height = img.height;

            ctx.clearRect(0, 0, cvs.width, cvs.height);
            ctx.drawImage(img, 0, 0, img.width, img.height);
            var dataUrl = cvs.toDataURL('image/jpeg', 1);
            $(".img_wrap").attr("src",dataUrl);
            $(".img_wrap").show();
            // 上傳略
            that.upload( dataUrl );
        };

        img.src = res;
    },
    upload:function( image_data ){
        /*這裏寫上次方法,圖片流是base64_encode的*/
    }
};


$(document).ready( function(){
    demo_h5_upload_ops.init();
} );

實例演示

地址:http://m.54php.cn/demo/h5_upload   也能夠手機掃描下圖 canvas


測試結果報告

手機 UC瀏覽器 微信
IOS

支持拍照上傳 瀏覽器

支持圖庫選擇上上傳 微信

支持拍照上傳 運維

支持圖庫選擇上傳 測試

Android

支持拍照上傳 this

支持圖庫選擇上傳

不支持拍照上傳

支持圖庫選擇上傳

效果圖

本人IOS 系統 親自測試了UC瀏覽器和微信自帶瀏覽器 完美兼容




原文地址: 【Demo】HTML5 拍照上傳
標籤: demo    h5    拍照    html5    上傳   

智能推薦

相關文章
相關標籤/搜索