Image Uri du Fichier
J'ai une Image Uri, extraites à l'aide des éléments suivants:
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
Cela fonctionne tout simplement incroyable pour les Intentions qui exigent une Image URI, etc (alors que je sais pour sûr, l'URI est valide).
Mais maintenant je veux enregistrer cette Image URI vers un fichier sur la carte sd. C'est plus difficile parce que l'URI n'est pas vraiment au point un fichier sur la carte sd ou de l'application.
Dois-je créer une image à partir de l'URI d'abord, puis enregistrer l'image Bitmap sur la carte sd ou est-il un moyen plus rapide (de préférence qui n'a pas besoin de la conversion d'une image bitmap en premier).
(J'ai eu un coup d'oeil à cette réponse, mais elle renvoie fichier non trouvé - https://stackoverflow.com/a/13133974/1683141)
OriginalL'auteur Mdlc | 2014-02-22
Vous devez vous connecter pour publier un commentaire.
Le problème est que l'Uri que vous avez été donné par
Images.Media.insertImage()
n'est pas un fichier image, en soi. C'est à une base de données d'entrée dans la Galerie. Donc, ce que vous devez faire est de lire les données à partir d'Uri et de l'écrire dans un nouveau fichier dans le stockage externe à l'aide de cette réponse https://stackoverflow.com/a/8664605/772095Cela ne nécessite pas la création d'un Bitmap, un peu double emploi avec les données liées à l'Uri dans un nouveau fichier.
Vous pouvez obtenir les données à l'aide d'un InputStream aide d'un code comme:
InputStream in = getContentResolver().openInputStream(imgUri);
Mise à jour
C'est complètement le code non testé, mais vous devriez être capable de faire quelque chose comme ceci:
IOUtils n'est qu'une commodité de la bibliothèque ... je vais mettre à jour ma réponse
Merci beaucoup pour votre temps! Je suis aussi une exception: java.io.IOException: open failed: ENOENT (Aucun fichier ou répertoire) à la ligne de Fichier.createnewfile()
J'ai mis à jour ma réponse
Salut, qu'est-ce que
bytesRead
?OriginalL'auteur SDJMcHattie