phoneGap相機

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,user-scalable=0;"
          name="viewport"/>
    <link href="css/jquery.mobile-1.3.2.min.css" rel="stylesheet" type="text/css"/>
    <script type="text/javascript" src="../cordova-2.7.0.js"></script>
    <script src="js/jquery-1.8.2.min.js"></script>
    <script src="js/jquery.mobile-1.3.2.min.js" type="text/javascript"></script>
    <style>
        .select{border:4px #ff0000 solid;}
    </style>
    <script type="text/javascript">
        $(document).live("pageinit",function(e){
            // 設置返回值的格式
            $("#pz").live("tap",function(e){//拍照
                alert("aaaa");
                navigator.camera.getPicture(onPhotoURISuccess, onFail,
                        {   quality: 50,
                            destinationType: navigator.camera.DestinationType.FILE_URI ,
                            sourceType: navigator.camera.PictureSourceType.CAMERA}
                );
            });
            $("#sc").live("tap",function(e){//上傳
                if(photoList.length<=0){
                    alert("您尚未選擇任何圖片!");
                    return false;
                }
                alert("上傳圖片"+photoList);
                var imageURI=photoList[0];
                var options = new FileUploadOptions();
                options.fileKey="file";
                options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
                options.mimeType="image/jpeg";

                var params = {};
                params.value1 = "test";
                params.value2 = "param";
                options.params = params;
                var ft = new FileTransfer();
                ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"),
                function(){
                    console.log("Code = " + r.responseCode);
                    console.log("Response = " + r.response);
                    console.log("Sent = " + r.bytesSent);
                }, function(error){
                    alert("An error has occurred: Code = " + error.code);
                    console.log("upload error source " + error.source);
                    console.log("upload error target " + error.target);
                }, options);
            });
            var photoList=new Array();
            //拍照成功的回調
            /*
             //camera的選項:
             1----Camera.sourceType:(A CameraPopoverHandle object(照片獲取控制參數))
             //打開默認的的照相設備,獲取一張照片
             Camera.sourceType = Camera.PictureSourceType.CAMERA
             //彈出照片選擇框 ,從相冊中選取一張圖片。
             Camera.sourceType = Camera.PictureSourceType.PHOTOLIBRARY
             Camera.sourceType = Camera.PictureSourceType.SAVEDPHOTOALBUM
             Camera.PictureSourceType = {
             //常量
             PHOTOLIBRARY : 0,
             CAMERA : 1,
             SAVEDPHOTOALBUM : 2
             };
             2 ----Camera.DestinationType:(成功回調的返回值得格式設置)
             Camera.DestinationType= Camera.DestinationType.DATA_URL;// 返回圖片的base64編碼字符串
             Camera.DestinationType= Camera.DestinationType.FILE_URI;// 返回圖片文件的URI
             Camera.DestinationType= Camera.DestinationType.NATIVE_URI;// Return image native URI (eg. assets-library:// on iOS or content:// on Android)
             Camera.DestinationType = {
             //常量
             DATA_URL : 0,
             FILE_URI : 1,
             NATIVE_URI : 2
             };
             3 ---- Camera.Direction:選擇攝像頭(前置(font)/後置())。
             Camera.Direction = {
             BACK : 0,           // 後置
             FRONT : 1           // 前置
             };
             4 ----Camera.MediaType:設置媒體選擇的類型。只能當PictureSourceType PHOTOLIBRARY或SAVEDPHOTOALBUM可以使用。
             Camera.MediaType = {
             PICTURE: 0,             // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
             VIDEO: 1,               // allow selection of video only, WILL ALWAYS RETURN FILE_URI
             ALLMEDIA : 2            // allow selection from all media types
             }

             //camera方法:
             navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
             1 cameraSuccess(params):獲取成功的回調函數。
             //params依賴於cameraOptions的格式化
             //params:    1 照片base64編碼生成的String,
             2 圖像文件在本地存儲位置的String(默認)。
             (你可以做任何你想要的圖片或URI編碼,例如:
             <img>標籤內顯示圖片
             保存數據到本地(LocalStorage, Lawnchair等)
             提交數據到服務器
             )
             //cameraOptions:自定義相機的設置參數
             { quality : 75,//照片質量(0-100)
             //照片選擇返回值的格式.由navigator.camera.DestinationType設定
             destinationType : Camera.DestinationType.DATA_URL,
             //照片獲取控制參數
             sourceType : Camera.PictureSourceType.CAMERA,
             //允許簡單的圖像編輯之前的選擇。(boolean)
             allowEdit : true,
             //返回的圖像文件的編碼。navigator.camera中由Camera.EncodingType定義
             //Camera.EncodingType = {
             //      JPEG : 0,               // Return JPEG encoded image
             //      PNG : 1                 // Return PNG encoded image
             // };
             encodingType: Camera.EncodingType.JPEG,
             //寬度。與targetHeight必須使用長寬比
             targetWidth: 100,
             targetHeight: 100,
             //設置媒體選擇的類型。只能當PictureSourceType PHOTOLIBRARY或SAVEDPHOTOALBUM可以使用。
             //Camera.MediaType = {
             //     PICTURE: 0,             // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
             //     VIDEO: 1,               // allow selection of video only, WILL ALWAYS RETURN FILE_URI
             //     ALLMEDIA : 2            // allow selection from all media types
             // }
             mediaType: Camera.MediaType.PICTURE,
             //旋轉圖像捕獲設備的正確的方向
             correctOrientation: false;
             //選擇攝像頭(前置(font)/後置())
             //Camera.Direction = {
             //     BACK : 0,           // 後置
             //     FRONT : 1           // 前置
             // };
             cameraDirection: navigator.camera.Font,
             //popoverOptions: iOS only options to specify popover location in iPad. Defined in CameraPopoverOptions.
             popoverOptions: CameraPopoverOptions,
             //保存到相冊
             saveToPhotoAlbum: false };
             */
            function onPhotoURISuccess(imageData) {//獲取圖片抵制
                alert("拍照成功:"+imageData);
                var currentTime=new Date();
                var $li=$("<li><img src='"+imageData+"' title='未選' height='120px' width='120px'/>"
                        +"<h6>拍攝時間:"+currentTime+"</h6></li>");
                $("#photoList").append($li);
                $.mobile.pageContainer.trigger("create");
            }
            $("#photoList").find("img").live("tap",function(){ //圖片選中
                if($(this).hasClass("select")){
                   $(this).removeClass("select");
                    photoList.splice(photoList.indexOf($(this).attr("src")),1);
                }else{
                    $(this).css({"border":"4px #ff0000 dashed","title":"已選"});
                    if(photoList.indexOf($(this).attr("src"))==-1){
                        photoList.push($(this).attr("src"));
                    }
                }
                alert("已選"+photoList.length+"張圖片!");
            });
            //拍照失敗的回調
            function onFail(message) {
                alert('拍照失敗: ' + message);
            }
        });
    </script>
    <style>
        .a{border: 2px saddlebrown dashed;
        }
    </style>
</head>
<body>
<div data-role="page" id="upload">
    <div data-role="header" data-position="fixed" data-tap-toggle="false" data-id="myHeader">
        <h2>圖片上傳</h2>
        <a id="pz" data-role="button" data-mini="true" data-inline="true">拍照</a>
        <a id="sc" data-role="button" data-mini="true" data-inline="true">上傳</a>
    </div>
    <div data-role="content">
        <ul data-role="listview" id="photoList">
        </ul>
    </div>
</div>

</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章