README.md 20 KB

cordova-plugin-camera

Build Status

このプラグインは、写真を撮るため、システムのイメージ ライブラリからイメージを選択するために API を提供します、グローバル navigator.camera オブジェクトを定義します。

オブジェクトは、グローバル スコープの ナビゲーター に添付、それがないまで deviceready イベントの後。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    console.log(navigator.camera);
}

インストール

cordova plugin add cordova-plugin-camera

API

  • カメラ
    • navigator.camera.getPicture(success, fail, options)
    • CameraOptions
    • CameraPopoverHandle
    • CameraPopoverOptions
    • navigator.camera.cleanup

navigator.camera.getPicture

カメラを使用して写真を取るか、デバイスの画像ギャラリーから写真を取得します。 イメージが渡されます成功時のコールバックを base64 エンコードされた 文字列、または、URI としてイメージ ファイル。 メソッド自体はファイル選択ポップ オーバーの位置を変更するために使用できる CameraPopoverHandle オブジェクトを返します。

navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);

解説

camera.getPicture 関数は、ユーザーの写真をスナップすることができますデバイスのデフォルト カメラ アプリケーションを開きます。 Camera.sourceTypeCamera.PictureSourceType.CAMERA と等しい場合既定では、この現象が発生します。 ユーザーは写真をスナップ、カメラ アプリケーションを閉じるし、アプリケーションが復元されます。

Camera.sourceType Camera.PictureSourceType.PHOTOLIBRARY または Camera.PictureSourceType.SAVEDPHOTOALBUM の場合、ダイアログ ボックスはユーザーを既存のイメージを選択することができますが表示されます。 camera.getPicture 関数は、デバイスの向きが変更されたとき、たとえば、イメージの選択ダイアログには、位置を変更するために使用することができます、CameraPopoverHandle オブジェクトを返します。

戻り値が cameraSuccess コールバック関数の指定 cameraOptions に応じて、次の形式のいずれかに送信されます。

  • A String 写真の base64 でエンコードされたイメージを含んでいます。

  • A String (既定値) のローカル記憶域上のイメージ ファイルの場所を表します。

自由に変更、エンコードされたイメージ、または URI などを行うことができます。

  • イメージをレンダリングする <img> 以下の例のように、タグ

  • ローカル データの保存 ( LocalStorageLawnchairなど)。

  • リモート サーバーにデータを投稿します。

: 新しいデバイス上の写真の解像度はかなり良いです。 デバイスのギャラリーから選択した写真は quality パラメーターが指定されて場合でも下方の品質に縮小されません。 一般的なメモリの問題を避けるために DATA_URL ではなく FILE_URICamera.destinationType を設定します。.

サポートされているプラットフォーム

写真を撮るし、base64 エンコード イメージとして取得します。

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
});

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);
}

環境設定 (iOS)

  • CameraUsesGeolocation(ブール値、デフォルトは false)。 Jpeg 画像をキャプチャするため EXIF ヘッダーで地理位置情報データを取得する場合は true に設定します。 これは、場合地理位置情報のアクセス許可に対する要求をトリガーする true に設定します。

    <preference name="CameraUsesGeolocation" value="false" />
    

アマゾン火 OS 癖

アマゾン火 OS イメージをキャプチャするデバイス上のカメラの活動を開始する意図を使用して、メモリの少ない携帯電話、コルドバ活動が殺されるかもしれない。 このシナリオではコルドバ活動が復元されると、イメージが表示されません。

Android の癖

アンドロイド、イメージをキャプチャするデバイス上でカメラのアクティビティを開始する意図を使用し、メモリの少ない携帯電話、コルドバ活動が殺されるかもしれない。 このシナリオではコルドバ活動が復元されると、イメージが表示されません。

ブラウザーの癖

Base64 エンコード イメージとして写真を返すのみことができます。

Firefox OS 癖

カメラのプラグインは現在、Web アクティビティ を使用して実装されていた.

iOS の癖

コールバック関数のいずれかの JavaScript alert() を含む問題が発生することができます。 IOS イメージ ピッカーまたは完全が終了するまで、警告が表示されますポップ オーバーを許可する setTimeout() 内でアラートをラップします。

setTimeout(function() {
    // do your thing here!
}, 0);

Windows Phone 7 の癖

ネイティブ カメラ アプリケーションを呼び出すと、デバイスが Zune を介して接続されている動作しませんし、エラー コールバックをトリガーします。

Tizen の癖

Tizen のみ Camera.DestinationType.FILE_URIdestinationTypeCamera.PictureSourceType.PHOTOLIBRARYsourceType をサポートしています.

CameraOptions

カメラの設定をカスタマイズするオプションのパラメーター。

{ quality : 75,
  destinationType : Camera.DestinationType.DATA_URL,
  sourceType : Camera.PictureSourceType.CAMERA,
  allowEdit : true,
  encodingType: Camera.EncodingType.JPEG,
  targetWidth: 100,
  targetHeight: 100,
  popoverOptions: CameraPopoverOptions,
  saveToPhotoAlbum: false };
  • quality: 0-100、100 がファイルの圧縮から損失なしで通常のフル解像度の範囲で表される、保存されたイメージの品質。 既定値は 50 です。 *(数)*(カメラの解像度についての情報が利用できないことに注意してください)。

  • destinationType: 戻り値の形式を選択します。既定値は FILE_URI です。定義されている navigator.camera.DestinationType (番号)

    Camera.DestinationType = {
        DATA_URL : 0,      // Return image as base64-encoded string
        FILE_URI : 1,      // Return image file URI
        NATIVE_URI : 2     // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
    };
    
  • sourceType: 画像のソースを設定します。既定値は、カメラです。定義されている navigator.camera.PictureSourceType (番号)

    Camera.PictureSourceType = {
        PHOTOLIBRARY : 0,
        CAMERA : 1,
        SAVEDPHOTOALBUM : 2
    };
    
  • allowEdit: 単純な選択の前に画像の編集を許可します。(ブール値)

  • encodingType: 返されるイメージ ファイルのエンコーディングを選択します。デフォルトは JPEG です。定義されている navigator.camera.EncodingType (番号)

    Camera.EncodingType = {
        JPEG : 0,               // Return JPEG encoded image
        PNG : 1                 // Return PNG encoded image
    };
    
  • targetWidth: スケール イメージにピクセル単位の幅。TargetHeightを使用する必要があります。縦横比は変わりません。(数)

  • targetHeight: スケール イメージにピクセル単位の高さ。TargetWidthを使用する必要があります。縦横比は変わりません。(数)

  • mediaType: から選択するメディアの種類を設定します。 場合にのみ働きます PictureSourceTypePHOTOLIBRARY または SAVEDPHOTOALBUM 。 定義されている nagivator.camera.MediaType (番号)

    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
    };
    
  • correctOrientation: キャプチャ中に、デバイスの向きを修正する画像を回転させます。(ブール値)

  • saveToPhotoAlbum: キャプチャ後、デバイス上のフォト アルバムに画像を保存します。(ブール値)

  • popoverOptions: iPad のポップ オーバーの場所を指定する iOS のみのオプションです。定義されています。CameraPopoverOptions.

  • cameraDirection: (前面または背面側) を使用するカメラを選択します。既定値は戻るです。定義されている navigator.camera.Direction (番号)

    Camera.Direction = {
        BACK : 0,      // Use the back-facing camera
        FRONT : 1      // Use the front-facing camera
    };
    

アマゾン火 OS 癖

  • 任意 cameraDirection 背面写真で結果の値します。

  • 無視、 allowEdit パラメーター。

  • Camera.PictureSourceType.PHOTOLIBRARYCamera.PictureSourceType.SAVEDPHOTOALBUM両方のアルバムが表示されます同じ写真。

Android の癖

  • 任意 cameraDirection 背面写真で結果の値します。

  • アンドロイドも使用しています作物活性、allowEdit もトリミングする必要があります動作し、実際にトリミングされた画像をコルドバで 1 つだけの作品一貫して Google プラス写真アプリケーションにバンドルされているものであることに渡します。 他の作物が機能しません。

  • Camera.PictureSourceType.PHOTOLIBRARYCamera.PictureSourceType.SAVEDPHOTOALBUM両方のアルバムが表示されます同じ写真。

ブラックベリー 10 癖

  • 無視、 quality パラメーター。

  • 無視、 allowEdit パラメーター。

  • Camera.MediaTypeサポートされていません。

  • 無視、 correctOrientation パラメーター。

  • 無視、 cameraDirection パラメーター。

Firefox OS 癖

  • 無視、 quality パラメーター。

  • Camera.DestinationType無視され、等しい 1 (イメージ ファイル URI)

  • 無視、 allowEdit パラメーター。

  • 無視、 PictureSourceType パラメーター (ユーザーが選択ダイアログ ウィンドウに)

  • 無視します、encodingType

  • 無視、 targetWidthtargetHeight

  • Camera.MediaTypeサポートされていません。

  • 無視、 correctOrientation パラメーター。

  • 無視、 cameraDirection パラメーター。

iOS の癖

  • 設定 quality 一部のデバイスでメモリ不足エラーを避けるために 50 の下。

  • 使用する場合 destinationType.FILE_URI 、写真、アプリケーションの一時ディレクトリに保存されます。アプリケーションの一時ディレクトリの内容は、アプリケーションの終了時に削除されます。

Tizen の癖

  • サポートされていないオプション

  • 常にファイルの URI を返す

Windows Phone 7 と 8 癖

  • 無視、 allowEdit パラメーター。

  • 無視、 correctOrientation パラメーター。

  • 無視、 cameraDirection パラメーター。

  • 無視、 saveToPhotoAlbum パラメーター。 重要: wp7/8 コルドバ カメラ API で撮影したすべての画像は携帯電話のカメラ巻き物に常にコピーします。 ユーザーの設定に応じて、これも、画像はその OneDrive に自動アップロードを意味できます。 イメージは意図したアプリより広い聴衆に利用できる可能性があります可能性があります。 場合は、このアプリケーションのブロッカー、msdn で説明されているように、CameraCaptureTask を実装する必要があります: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspxコメントにすることがありますもかアップ投票関連の問題を課題追跡システム

  • 無視、 mediaType のプロパティ cameraOptions として Windows Phone SDK には、フォト ライブラリからビデオを選択する方法は行いません。

CameraError

エラー メッセージを提供する onError コールバック関数。

function(message) {
    // Show a helpful message
}

解説

  • message: メッセージは、デバイスのネイティブ コードによって提供されます。(文字列)

cameraSuccess

画像データを提供する onSuccess コールバック関数。

function(imageData) {
    // Do something with the image
}

解説

  • imagedata を扱う: Base64 エンコード イメージのデータ、*または画像ファイルによって URI の cameraOptions 効果。(文字列)*

// Show image
//
function cameraCallback(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}

CameraPopoverHandle

Navigator.camera.getPicture によって作成されたポップオーバーパン ダイアログ ボックスへのハンドル.

解説

  • setPosition: Set the position of the popover. Takes the CameraPopoverOptions that specify the new position.

サポートされているプラットフォーム

 var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail,
     { destinationType: Camera.DestinationType.FILE_URI,
       sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
       popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
     });

 // Reposition the popover if the orientation changes.
 window.onorientationchange = function() {
     var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
     cameraPopoverHandle.setPosition(cameraPopoverOptions);
 }

CameraPopoverOptions

iOS だけ指定パラメーターをポップ オーバーのアンカー要素の場所および矢印方向計算されたライブラリまたはアルバムから画像を選択するとき。

{ x : 0,
  y :  32,
  width : 320,
  height : 480,
  arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
};

解説

  • x: ピクセルの x 座標画面要素にポップ オーバーのアンカーになります。(数)

  • y: y ピクセル座標の画面要素にポップ オーバーのアンカーになります。(数)

  • width: ポップ オーバーのアンカーになる上の画面要素のピクセル単位の幅。(数)

  • height: ポップ オーバーのアンカーになる上の画面要素のピクセル単位の高さ。(数)

  • arrowDir: 方向のポップ オーバーで矢印をポイントする必要があります。定義されている Camera.PopoverArrowDirection (番号)

        Camera.PopoverArrowDirection = {
            ARROW_UP : 1,        // matches iOS UIPopoverArrowDirection constants
            ARROW_DOWN : 2,
            ARROW_LEFT : 4,
            ARROW_RIGHT : 8,
            ARROW_ANY : 15
        };
    

矢印の方向と、画面の向きを調整するポップ オーバーのサイズを変更可能性がありますに注意してください。 アンカー要素の位置を指定するときの方向の変化を考慮することを確認します。

navigator.camera.cleanup

削除中間一時ストレージからカメラで撮影した写真。

navigator.camera.cleanup( cameraSuccess, cameraError );

解説

camera.getPicture を呼び出した後一時記憶域に保存されている中間画像ファイルを削除します。 Camera.sourceType の値が Camera.PictureSourceType.CAMERA に等しい、Camera.destinationTypeCamera.DestinationType.FILE_URI と等しいの場合にのみ適用されます。.

サポートされているプラットフォーム

navigator.camera.cleanup(onSuccess, onFail);

function onSuccess() {
    console.log("Camera cleanup success.")
}

function onFail(message) {
    alert('Failed because: ' + message);
}