2017-01-04 2 views
1

사진을 찍을 앱을 개발 중이며 Cordova를 배우고 있습니다. 내가 버튼을 클릭 할 때마다, 작동하지 않는 아무 일도 발생하지 않습니다Cordova takePhoto가 작동하지 않습니다.

var takePhoto = function() { 
    navigator.camera.getPicture(onSuccess, onError, { quality: 30, 
     destinationType: Camera.destinationType.FILE_URI, 
     saveToPhotoAlbum: true, 
     targetWidth: 1500, 
     targetHeight: 1500 
    }); 

    function onSuccess(imageData) { 
     $('.photoPreview').show(); 
     var image = document.getElementById('photoSrc'); 
     image.src = "data:image/jpeg;base64," + imageData; 
     photoData = imageData; 
     $('#photoMessage').html(''); 
    } 

    function onError(message) { 
    } 
} 

:이 JS 사용.

var selectPhoto = function() { 
    navigator.camera.getPicture(onSuccess, onFail, { quality: 30, 
     destinationType: Camera.destinationType.FILE_URI, 
     sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY, 
     targetWidth: 1500, 
     targetHeight: 1500 
    }); 

    function onSuccess(imageData) { 
     $('.photoPreview').show(); 
     var image = document.getElementById('photoSrc'); 
     image.src = "data:image/jpeg;base64," + imageData; 
     photoData = imageData; 
     $('#photoMessage').html(''); 
    } 

    function onFail(message) { 
    } 
} 

나는이

$('#selectPhoto').on('click', function() { 
    selectPhoto(); 
}); 

$('#takePhoto').on('click', function() { 
    takePhoto(); 
}); 

사용하고 그에 정보를 추가하고

<button id="selectPhoto" class="photo-button">Select Existing Photo</button> 
<button id="takePhoto" class="photo-button">Take New Photo</button> 

내가 '이 HTML : 같은 내가 기존의 사진을 선택하는 데 사용했던 기능을 발생 최신 Cordova 6.4.0, [email protected] 및 최신 cordova-plugin-camera를 사용하여 https://github.com/apache/cordova-plugin-camera

내가 무엇을해야하는지 알려주세요. 고맙습니다!

답변

0

반환 된 imageData를 가져 와서 DOM에 직접 base64 데이터로 삽입하는 것처럼 보입니다. DATA_URL을 옵션으로 사용하여 카메라 옵션을 기본 64로 변경 한 경우에는 정상적으로 작동합니다.

navigator.camera.getPicture(onSuccess, onError, { quality: 30, 
    destinationType: Camera.destinationType.DATA_URL, 
    saveToPhotoAlbum: true, 
    targetWidth: 1500, 
    targetHeight: 1500 
}); 

대신 요약 :

navigator.camera.getPicture(onSuccess, onError, { quality: 30, 
    destinationType: Camera.destinationType.FILE_URI, 
    saveToPhotoAlbum: true, 
    targetWidth: 1500, 
    targetHeight: 1500 
}); 

편집 : Jaze가 "하는 DestinationType는"대문자로해야한다는, 진짜 이유를 발견했다. 놓치기 쉽습니다! 올바른 솔루션을 보려면 아래를 참조하십시오.

navigator.camera.getPicture(onSuccess, onError, { quality: 30, 
    destinationType: Camera.DestinationType.DATA_URL, 
    saveToPhotoAlbum: true, 
    targetWidth: 1500, 
    targetHeight: 1500 
}); 
+0

전에 DATA_URL이 (가) 나는 이전의 Cordova 문서를 기반으로 FILE_URI를 따라갔습니다. 하지만 DATA_URL을 다시 시도했지만 슬프게도 여전히 작동하지 않았습니다. 고마워요 –

+0

아 좋아요. 자, 이제 코드를 다시 변경 했으므로 코드가 나에게 잘 어울립니다. 카메라 성공 콜백이 실제로 onFail이 아니라 (또는 어느 것도 아닌) 실제로 실행되고 있음을 어떻게 확인할 수 있습니까? 나는 당신이 이미 이것을했다고 가정합니다. – Sam

+0

큰 "i"와 같이 구문 및 Camera.DestinationType.DATA_URI를 변경하는 데 많은 테스트가 수행되었습니다. 어떤 기묘한 이유 LOL, 대문자 D 또는 "destinationType"너무 작은 d 주위에 연주했다. 고마워요, 이제는 지금까지 일하고 있습니다. –

관련 문제