===== Camera =====
==== 설명 ====
* 디바이스의 기본 카메라 어플리케이션에 접속하는 기능을 제공한다.
==== 제약사항 ====
* Camera API의 플랫폼별 제약사항은 다음과 같다.
=== Android ===
== cameraOptions ==
* allowEdit 는 적용되지 않는다.
* Camera.PictureSourceType.PHOTOLIBRARY와 Camera.PictureSourceType.SAVEDPHOTOALBUM 은 모두 사진 앨범을 보여준다.
=== iOS ===
== camera.getPicture ==
* JavaScript의 alert()를 가지는 callback 함수는 문제를 야기한다. (alert가 표시되기 전에 이미지를 보여주거나, popover 효과를 나타내는 문제.)
* setTimeout("alert('message');", 0);로 문제를 해결한다.
== cameraOptions ==
* Quality를 50 이하로 설정해야 특정 단말기에서 나타나는 메모리 오류를 피할 수 있다.
* destinationType.FILE_URI 을 사용할 경우, 사진이 어플리케이션의 임시폴더에 저장된다.
* 어플리케이션이 종료될 때, 어플리케이션 임시폴더 내의 사진들은 삭제된다.
* 사진들의 용량이 대체로 크기 때문에 navigator.fileMgr 를 통해 단말기의 용량을 조절하여야 한다.
==== 환경 설정 ====
=== Android ===
* app/res/xml/config.xml
* app/AndroidManifest
=== iOS ===
* App/Supporting Files/Cordova.plist
Plugins
Camera
CDVCamera
==== 관련 함수 ====
=== camera.getPicture ===
* 카메라로 사진을 찍고 찍은 사진을 가져오거나, 단말기의 앨범에서 사진을 선택해서 가져온다.
* base64로 인코딩된 이미지를 가져오거나 사진 파일의 경로을 통해 사진을 가져온다.
navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
* Quick Example [Base64-encoded Image]
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);
}
* Quick Example [이미지 경로]
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);
}
=== camera.cleanup ===
* 임시 저장공간에 저장된 이미지 파일을 삭제한다.
* **iOS**에서 유일하게 지원한다.
navigator.camera.cleanup( cameraSuccess, cameraError );
==== 파라미터 ====
=== cameraSuccess ===
* 사진을 찍거나 선택하는데 성공했을때 실행하는 callback 함수.
* imageData : Base64로 인코딩된 이미지 데이터나 File URI를 가지는 이미지 데이터이다.
function(imageData) {
// Do something with the image
}
=== cameraError ===
* 사진을 찍거나 선택하는데 실패 했을 때 메시지를 매개변수로 하는 callback 함수.
* message : 디바이스에서 제공하는 문자열형태의 native 코드.
function(message) {
// Show a helpful message
}
=== 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|이미지의 품질(해상도)를 백분율로 정의한다.|Number|값 : 0 ~ 100|
|destinationType|이미지의 포맷을 정의한다.|Number|0 : DATA_URL, 1 : FILE_URI|
|sourceType|포토 라이브러리, 카메라에서 찍은 사진 등 선택할 소스를 설정한다.|Number|PHOTOLIBRARY : 0, CAMERA : 1,SAVEDPHOTOALBUM : 2|
|allowEdit|이미지 선택 전, 이미지 편집 여부.|Boolean| |
|encodingType|이미지 파일의 인코딩 종류를 정의한다.|Number|JPEG : 0, PNG : 1|
|targetWidth|이미지의 너비(pixel)를 설정한다.|Number|비율은 고정.|
|targetHeight|이미지의 높이(pixel)를 설정한다.|Number|비율은 고정.|
|mediaType|pictureSourceType이 PHOTOLIBRARY 또는 SAVEDPHOTOALBUM일 때, 미디어의 타입을 설정한다.|Number| |
|correctOrientation|이미지를 담는동안 이미지 회전 여부.|boolean| |
|saveToPhotoAlbum|이미지를 담은 후, 단말기 저장 여부.|boolean| |
|popoverOptions|iPad에서의 popover 옵션|CameraPopoverOptions| |
* destinationType
Camera.DestinationType = {
DATA_URL : 0, // Return image as base64 encoded string
FILE_URI : 1 // Return image file URI
};
* sourceType
Camera.PictureSourceType = {
PHOTOLIBRARY : 0,
CAMERA : 1,
SAVEDPHOTOALBUM : 2
};
* encodingType
Camera.EncodingType = {
JPEG : 0, // Return JPEG encoded image
PNG : 1 // Return PNG encoded image
};
* 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
};
=== cameraOptions ===
* Library나 앨범의 이미지를 선택할 때, iPad에서 popover의 방향이나 위치를 설정하는 파라미터다.
{ x : 0,
y : 32,
width : 320,
height : 480,
arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
};
^유형^설명^타입^비고^
|x|화면에서 popover되는 위치의 pixel 단위 x축.|Number| |
|y|화면에서 popover되는 위치의 pixel 단위 y축.|Number| |
|width|화면에서 popover되는 요소에 대한 pixel 단위의 너비 값.|Number| |
|height|화면에서 popover되는 요소에 대한 pixel 단위의 높이 값.|Number| |
|arrowDir|popover 되는 방향.|Camera.PopoverArrowDirection| |
* Camera.PopoverArrowDirection
Camera.PopoverArrowDirection = {
ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
ARROW_DOWN : 2,
ARROW_LEFT : 4,
ARROW_RIGHT : 8,
ARROW_ANY : 15
};
==== 참고 자료 ====
* Phonegap : http://docs.phonegap.com/en/2.9.0/cordova_camera_camera.md.html#Camera