JavaScript의 alert()를 가지는 callback 함수는 문제를 야기한다. (alert가 표시되기 전에 이미지를 보여주거나, popover 효과를 나타내는 문제.)
setTimeout(“alert('message');”, 0);로 문제를 해결한다.
Quality를 50 이하로 설정해야 특정 단말기에서 나타나는 메모리 오류를 피할 수 있다.
destinationType.FILE_URI 을 사용할 경우, 사진이 어플리케이션의 임시폴더에 저장된다.
어플리케이션이 종료될 때, 어플리케이션 임시폴더 내의 사진들은 삭제된다.
사진들의 용량이 대체로 크기 때문에 navigator.fileMgr 를 통해 단말기의 용량을 조절하여야 한다.
<plugin name="Camera" value="org.apache.cordova.CameraLauncher" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<key>Plugins</key>
<dict>
<key>Camera</key>
<string>CDVCamera</string>
</dict>
navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
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);
}
navigator.camera.cleanup( cameraSuccess, cameraError );
function(imageData) {
// Do something with the image
}
function(message) {
// Show a helpful message
}
{ 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 | |
Camera.DestinationType = {
DATA_URL : 0, // Return image as base64 encoded string
FILE_URI : 1 // Return image file URI
};
Camera.PictureSourceType = {
PHOTOLIBRARY : 0,
CAMERA : 1,
SAVEDPHOTOALBUM : 2
};
Camera.EncodingType = {
JPEG : 0, // Return JPEG encoded image
PNG : 1 // Return PNG encoded image
};
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
};
{ 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 = {
ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
ARROW_DOWN : 2,
ARROW_LEFT : 4,
ARROW_RIGHT : 8,
ARROW_ANY : 15
};