2017-03-13 3 views
0

J'ai donc le suivant qui fonctionne vraiment bien comme cela est:Titanium Ajouter une photo à la galerie spécifique

button.addEventListener("click", function(e){ 
    Titanium.Media.showCamera({ 
     success:function(e){ 
      if(e.mediaType === Titanium.Media.MEDIA_TYPE_PHOTO){ 
       var imageView = Titanium.UI.createImageView({ 
        image: e.media, 
        width: 'auto', 
        height: 'auto', 
        top: 50, 
        zIndex: 1 
       }); 
       win.add(imageView); 
      } else { 
       alert("Only Photos aloud"); 
      } 
     }, 
     error:function(e){ 
      alert("There was an error"); 
     }, 
     cancel:function(e){ 
      alert("The event was cancelled"); 
     }, 
     allowEditing: true, 
     saveToPhotoGallery: true, 
     mediaTypes:[Titanium.Media.MEDIA_TYPE_PHOTO,Titanium.Media.MEDIA_TYPE_VIDEO], 
     videoQuality:Titanium.Media.QUALITY_HIGH 
    }); 
}); 

saveToPhotoGallery ajoute juste la photo prise à la galerie par défaut dans les photos iOS App. Je dois cependant ajouter la photo à un dossier spécifique dans l'application Photos iOS. Quelqu'un at-il une idée de comment je pourrais faire cela avec Titanium? J'ai recherché les intewebs mais n'ai rien trouvé sur comment ajouter une photo prise à un dossier spécifique.

Merci pour l'aide les gars

Chris

Répondre

0

Mais, permettez-moi de préciser que le fichier peut être enregistrer dans le répertoire d'application que dans IOS mais Android, vous pouvez l'enregistrer dans le externalStorage. Vous pouvez consulter la documentation via le lien ci-dessous:

https://docs.appcelerator.com/platform/latest/#!/guide/Filesystem_Access_and_Storage

Vous pouvez facilement enregistrer le fichier dans votre dossier en utilisant le code suivant:

if (OS_ANDROID) { 
    var f12 = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory); 
} else { 
    var f12 = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory); 
} 

var galleryImg = e.media; 
var fileToSave = null; 
var fileName = 'IMG' + todayDate + "HB" + Ti.App.Properties.getInt('imgCounter') + '.jpg'; 
if (OS_ANDROID) { 
    fileToSave = Titanium.Filesystem.getFile(f12.resolve(), fileName); 
} else { 
    fileToSave = Titanium.Filesystem.getFile(f12.resolve(), fileName); 
} 
fileToSave.write(galleryImg); 

Si vous voulez créer un sous-répertoire puis utilisez le code suivant:

var dir = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,'mysubdir'); 
dir.createDirectory(); // this creates the directory 

Mais, permettez-moi de préciser que le fichier peut être enregistrer dans le répertoire de l'application que dans IOS mais dans Android vous pouvez l'enregistrer dans le externalStorage. Vous pouvez consulter la documentation via le lien ci-dessous:

https://docs.appcelerator.com/platform/latest/#!/guide/Filesystem_Access_and_Storage

EDIT

vous pourriez le faire de cette façon:

// get the TiBlob 
var blob = img_view.toImage(); 

// try to save the image the image 
Ti.Media.saveToPhotoGallery(blob,{ 
    success: function(e){ 
     if (callback == undefined) { 
      alert('Saved image to gallery'); 
     } else { 
      callback(); 
     } 
    }, 
    error: function(e){ 
     alert("Error saving the image"); 
    } 
}); 

Bonne chance, Cheers

+0

Je suis J'espère réellement ajouter la photo à l'application native iOS Photos. Cela semble ajouter la photo à un système de stockage de fichiers interne d'une application ai-je raison? Existe-t-il un moyen d'ajouter la photo à un dossier dans l'application Photos? – Chris

+0

! Ma faute ! J'ai eu le mauvais extrait de code dans la question ...! J'utilise en fait la fonction showCamera qui ouvre la caméra et non la fonction openPhotoGallery. Pardon. J'ai donc mis à jour la question. – Chris

+0

@Chris: Je l'avais mentionné plus tôt dans la même réponse, que ce ne sera pas possible dans l'iOS. J'ai mis à jour la question, en soulignant le même point. Jetez un coup d'oeil s'il vous plait. –