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
<plugin name="Camera" value="org.apache.cordova.CameraLauncher" />
  • app/AndroidManifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS

  • App/Supporting Files/Cordova.plist
<key>Plugins</key>
<dict>
    <key>Camera</key>
    <string>CDVCamera</string>
</dict>

관련 함수

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이미지의 포맷을 정의한다.Number0 : DATA_URL, 1 : FILE_URI
sourceType포토 라이브러리, 카메라에서 찍은 사진 등 선택할 소스를 설정한다.NumberPHOTOLIBRARY : 0, CAMERA : 1,SAVEDPHOTOALBUM : 2
allowEdit이미지 선택 전, 이미지 편집 여부.Boolean
encodingType이미지 파일의 인코딩 종류를 정의한다.NumberJPEG : 0, PNG : 1
targetWidth이미지의 너비(pixel)를 설정한다.Number비율은 고정.
targetHeight이미지의 높이(pixel)를 설정한다.Number비율은 고정.
mediaTypepictureSourceType이 PHOTOLIBRARY 또는 SAVEDPHOTOALBUM일 때, 미디어의 타입을 설정한다.Number
correctOrientation이미지를 담는동안 이미지 회전 여부.boolean
saveToPhotoAlbum이미지를 담은 후, 단말기 저장 여부.boolean
popoverOptionsiPad에서의 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
arrowDirpopover 되는 방향.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
    };

참고 자료

 
egovframework/hyb/hrte/deviceapi/camera.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki