W mojej aplikacji PhoneGap/jQuery Mobile używam obecnie interfejsu API aparatu PhoneGaps, aby umożliwić użytkownikowi zrobienie zdjęcia, które jest również przechowywane w rolce z aparatu. Ustawiam DestinationType na FILE_URI i zapisuję tę ścieżkę w lokalnej bazie danych. Jednak FILE_URI to ścieżka do tymczasowej lokalizacji, która jest niszczona po zamknięciu aplikacji. Myślałem o zapisaniu nazwy obrazu, a następnie odzyskaniu obrazu z rolki kamery. Czy istnieje ścieżka, z której mogę później pobrać obrazy z rolki z aparatu?Phonegap - pobieranie zdjęcia z rolki aparatu po ścieżce
byłem zapisywania obrazów jako base64 w db, ale jestem trochę zmęczony tej metody z powodu tej noty w PhoneGap API Doc:
Uwaga: Jakość obrazu zdjęć wykonanych za pomocą aparatu na nowszych urządzeniach jest całkiem niezły. Kodowanie takich obrazów za pomocą Base64 spowodowało problemy z pamięcią na niektórych urządzeniach (iPhone 4, BlackBerry Torch 9800). Dlatego zalecane jest użycie parametru FILE_URI jako "Camera.destinationType".
EDIT:
Got to praca z odpowiedzią @Simon MacDonalda. Oto mój kod okrojoną:
function capturePhoto() {
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 25, destinationType: Camera.DestinationType.FILE_URI });
}
function onPhotoURISuccess(imageURI) {
createFileEntry(imageURI);
}
function createFileEntry(imageURI) {
window.resolveLocalFileSystemURI(imageURI, copyPhoto, fail);
}
function copyPhoto(fileEntry) {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys) {
fileSys.root.getDirectory("photos", {create: true, exclusive: false}, function(dir) {
fileEntry.copyTo(dir, "file.jpg", onCopySuccess, fail);
}, fail);
}, fail);
}
function onCopySuccess(entry) {
console.log(entry.fullPath)
}
function fail(error) {
console.log(error.code);
}
staram się obsługiwać ten dokładnie tę samą sytuację, a pisał kod wydaje się działać i otrzymuję całą drogę do twoja funkcja onCopySuccess, ale nadal nie widzę żadnych zdjęć w Rolce z aparatu ani w żadnym innym albumie. Wpis otrzymany w funkcji onCopySuccess opisuje plik, który zostanie wyczyszczony po wyczyszczeniu tymczasowej. - Yoh Suzuki właśnie teraz edytuj –
Powyższy kod nie zapisze zdjęcia w albumie, tylko w folderze Dokumenty w aplikacji. Ścieżka do zdjęcia będzie wyglądać mniej więcej tak: '" /var/mobile/Applications/017323CA-35C1-4D50-9CBA-DCC7C697FAF1/Documents/photos/file.jpg " '. Dowolny ciąg to folder utworzony przez iOS dla Twojej aplikacji. Aby zapisać zdjęcie do rolki aparatu, w wywołaniu getPicture dodaj to do obiektu opcji: '" savePhotoToAlbum ":" true "'. Pamiętaj, że ścieżki obrazu nie można uzyskać w rolce z aparatu (AFAIK), dlatego musisz zapisać kopię w folderze Dokumenty w aplikacji. – Casey
savePhotoToAlbum nie działa dla mnie i nie ma go w dokumentacji. –