PhoneGap APIヘルプドキュメント翻訳-Camera(カメラ)

8214 ワード

Cameraオブジェクトは、デバイスのデフォルトカメラアプリケーションへのアクセスを提供します.
方法:
  • camera.getPicture

  • パラメータ:
  • cameraSuccess
  • cameraError
  • cameraOptions

  • camera.getPicture:カメラを使用して写真を撮るか、デバイスアルバムから写真を取得するかを選択します.ピクチャはbase 64で符号化された文字列またはピクチャURIの形式で返される.
    簡単な例:
     
    navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );

    説明:
     
    camera.getPicture関数は、デバイスのデフォルトカメラアプリケーションを開き、ユーザーが写真を撮ることができるようにします(Camera.sourceTypeがCamera.PictureSourceType.CAMERAに設定されている場合、これもデフォルトです).撮影が終了すると、カメラアプリケーションは閉じられ、ユーザーアプリケーションが復元されます.
    もしCamera.sourceType = Camera.PictureSourceType.PHOTOOLIBRARYまたはCamera.PictureSourceType.SAVEDPHOTOALBUM、システムは写真の選択ダイアログボックスを弾き出して、ユーザーはアルバムの中から写真を選択することができます.
    戻り値は、cameraOptionsパラメータによって設定された次のフォーマットのいずれかに従って、cameraSuccessコールバック関数に送信されます.
  • Base 64でエンコードされた写真画像(デフォルト)を含む文字列.
  • は、ローカルに格納された画像ファイルの位置を表す文字列である.

  • エンコードされた画像やURIについて、次のような処理を行うことができます.
  • ラベルによる画像のレンダリング(次の例を参照)
  • ローカルデータ(LocalStorage,Lawnchair*など)
  • として格納
  • リモートサーバ
  • にデータを送信する.
    備考:新しいデバイスでカメラを使用して撮影された写真の品質はかなりよく、Base 64を使用してこれらの写真を符号化すると、IPHONE 4、BlackBerry Torch 9800などのデバイスにメモリの問題が発生します.そこで、「Camera.destinationType」をFILE_にすることを強くお勧めしますURI.
    サポートされるプラットフォーム:
  • Android
  • BlackBerry WebWorks(OS 5.0以降)
  • iOS

  • 簡単な例:
    Base 64でエンコードされた画像を撮影して取得する:
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50 });
    
    function onSuccess(imageData) {
       var image = document.getElementById('myImage');
       image.src = "data:image/jpeg;base64," + imageData;
    }
    
    function onFail(message) {
       alert('Failed because: ' + message);
    }

    写真を撮って、画像ファイルのパスを取得します.
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    				destinationType: Camera.DestinationType.FILE_URI });
    				
    function onSuccess(imageURI) {
    	var image = document.getElementById('myImage');
    	image.src = imageURI;
    }
    	
    function onFail(message) {
    	alert('Failed because: ' + message);
    }

     
    完全な例:
    <!DOCTYPE html>
    <html>
    <head>
    <title>Capture Photo</title>
    
    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
    <script type="text/javascript" charset="utf-8">
    
    	var pictureSource;		//    
    	var destinationType;		//        
    	
    	//   PhoneGap    
    	document.addEventListener("deviceready",onDeviceReady,false);
    	
    	// PhoneGap    ,    !
    	function onDeviceReady() {
    		pictureSource=navigator.camera.PictureSourceType;
    		destinationType=navigator.camera.DestinationType;
    	}
    	
    	//           Base64        
    	function onPhotoDataSuccess(imageData) {
    	
    		//        Base64       
    		// console.log(imageData);
    		//       
    		var smallImage = document.getElementById('smallImage');
    			 
    		//          
    		smallImage.style.display = 'block';
    		
    		//        
    		//     CSS       
    		smallImage.src = "data:image/jpeg;base64," + imageData;
    	}
    	   
       //           URI    
       function onPhotoURISuccess(imageURI) {
    	
    		//             URI
    		// console.log(imageURI);
    		//       
    		var largeImage = document.getElementById('largeImage');
    		 
    		//          
    		largeImage.style.display = 'block';
    	
    		//        
    		//     CSS       
    		largeImage.src = imageURI;
    	}
    	   
       // “Capture Photo”          
       function capturePhoto() {
    
    		//            ,   Base64          
    		navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50 });
       }
       
       // “Capture Editable Photo”          
       function capturePhotoEdit() {
    
    		//            ,   Base64             
    		navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true });
       }
    	   
       //“From Photo Library”/“From Photo Album”          
       function getPhoto(source) {
       
       		//              URI
    		navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
    		destinationType: destinationType.FILE_URI,sourceType: source });
       }
    
       //             
       function onFail(mesage) {
    		alert('Failed because: ' + message);
       }
    	
    </script>
    
    </head>
    <body>
    	<button onclick="capturePhoto();">Capture Photo</button> <br>
    	<button onclick="capturePhotoEdit();">Capture Editable Photo</button> <br>
    	<button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">From Photo Library</button><br>
    	<button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">From Photo Album</button><br>
    	<img style="display:none;width:60px;height:60px;" id="smallImage" src="" />
    	<img style="display:none;" id="largeImage" src="" />
    	</body>
    </html>

    CameraSuccess:画像データのonSuccessコールバック関数を提供します.
    パラメータ:
  • imageData:cameraOptionsの設定値に基づいて、Base 64で符号化された画像データまたは画像ファイルのURIとする.(文字列タイプ)
  • 例:
    //     
    function cameraCallback(imageData) {
    	var image = document.getElementById('myImage');
    	image.src = "data:image/jpeg;base64," + imageData;
    }

    ameraError:エラーメッセージを提供するonErrorコールバック関数.
    パラメータ:
  • message:デバイスのローカルコードから提供されるエラー情報.(文字列タイプ)
  • cameraOptions:カメラ設定のオプションパラメータをカスタマイズします.
    {	quality : 75,
    	destinationType : Camera.DestinationType.DATA_URL,
    	sourceType : Camera.PictureSourceType.CAMERA,
    	allowEdit : true,
    	encodingType : Camera.EncodingType.JPEG,
    	targetWidth : 100,
    	targetHeight : 100};

    オプション:
  • quality:画像の品質を記憶し、範囲は[001]である.(数値タイプ)
  • destinationType:データを返すフォーマットを選択します.navigatorを通ります.camera.DestinationTypeで定義します.(数値タイプ)
  • Camera.DestinationType = {
    	DATA_URL : 0,	//  Base64          
    	FILE_URI : 1	//       URI
    }
     
    sourceType:画像ソースを設定します.nagivatorを通ります.camera.PictureSourceTypeで定義します.(数値タイプ)
     
    Camera.PictureSourceType = {
    	PHOTOLIBRARY : 0,
    	CAMERA : 1,
    	SAVEDPHOTOALBUM : 2
    }
  • allowEdit:画像を選択して操作する前に、簡単な編集を許可します.(ブールタイプ)
  • EncodingType:画像ファイルを返す符号化方式を選択し、navigator.camera.EncodingTypeで定義します.(数値タイプ)
  • Camera.EncodingType = {
    	JPEG : 0,		//   JPEG    
    	PNG : 1			//   PNG    
    };
  • targetWidth:ピクセル単位の画像の拡大・縮小幅は、targetHeightと同時に使用する必要があります.対応するアスペクト比は変更されません.(数値タイプ)
  • targetHeight:ピクセル単位で画像を拡大・縮小するには、targetWidthと同時に使用する必要があります.対応するアスペクト比は変更されません.(数値タイプ)
  • Androidの特異な状況:
  • allowEditパラメータは無視されます.
  • Camera.PictureSourceType.PHOTOOLIBRARYまたはCamera.PictureSourceType.SAVEDPHOTOALBUMには、同じコレクションが表示されます.
  • Camera.EncodingTypeはサポートされていません.

  • BlackBerryの特異な状況:
  • qualityパラメータは無視されます.
  • sourceTypeパラメータは無視されます.
  • allowEditパラメータは無視されます.
  • 撮影が終了すると、ローカルカメラアプリケーションを閉じるには、アプリケーションにキー注入権限が必要になります.
  • 大きな画像サイズを使用すると、最近高解像度カメラを備えたモデルデバイスで画像を符号化できない可能性があります(例えば、Torch 9800).

  • Palmの特異な状況:
  • qualityパラメータは無視されます.
  • sourceTypeパラメータは無視されます.
  • allowEditパラメータは無視されます.

  • iPhoneの特異な状況:
  • 一部のデバイスでメモリエラーが発生しないようにqualityの設定値は50を下回る.
  • destinationTypeを使用する.FILE_URIでは、カメラで撮影した写真や編集した写真がアプリケーションのDocuments/tmpディレクトリに格納されます.
  • アプリケーションが終了すると、アプリケーションのDocuments/tmpディレクトリが削除されます.ストレージスペースのサイズが非常に重要である場合、開発者もnavigatorを通過することができる.fileMgrのインタフェースでディレクトリを削除します.

  •