Aller au contenu

Enregistrer et visualiser une image


benthebest

Recommended Posts

Bonjour,

Voila j'ai un soucis : je tente d'enregistrer une image provenant de la preview de la camera, grace à la fonction callback onpreviewframe(). Mais j'ai une erreur :

java.lang.UnsupportedOperationException: Unknown URI: content://media/external/images/media

Pourtant, j'ai recopié le code d'un bouquin concernant l'enregistrement d'une image. Le voici :

camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {

 if(nbImages == 15)
 {
  ContentValues values = new ContentValues();
  values.put(Media.TITLE, uuidUse + "_" + (++nbImages));
  values.put(Media.DESCRIPTION, "Image prise par le telephone");
  Uri uri = getContentResolver().insert(
	Images.Media.EXTERNAL_CONTENT_URI, values);
  OutputStream os;
  try {
   os = getContentResolver().openOutputStream(uri);
   os.write(_data);
   os.flush();
   os.close();
  } catch (FileNotFoundException e) {
   Log.e(getClass().getSimpleName(),
	 "Fichier non trouvé à l'ecriture de l'image", e);
  } catch (IOException e) {
   Log.e(getClass().getSimpleName(),
	 "Erreur E/S à l'enregistrement de l'image", e);
  }
 }
 else
 {
  ++nbImages;  
 }
}
  });

Avec ceci, la preview se lance puis provoque une erreur qui ferme la preview lorsque nbimages = 15.

Je précise que j'ai bien rajouté la permission

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Voila, si vous avez une idée je suis preneur :)

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Ok je viens aux nouvelles :) Merci tout d abord pr ton aide.

Alors la ça plante plus, je n'ai plus d'erreurs, ça crée bien un fichier jpeg mais je n'arrive pas à l'ouvrir ! Je crois qu'il est incomplet parce que [color=red]qd[/color] j'essaie de l'ouvrir sous photoshop ça me dit "Impossible d'ouvrir le fichier F:\DCIM\Camera\1234545345345.jpg" car le segment de marqueur JPEG est trop court (le fichier est peut-être incomplet ou tronqué)".

Pourtant je fais bien un fclose à la fin de l’écriture ...

Une idée ?

Lien vers le commentaire
Partager sur d’autres sites

Personne pour m'aider ? :(

Bon, j'ai essayé une autre technique d'enregistrement :

FileOutputStream os = null;
  try {
   //ICI ca ecrit mais la picture ne s'ouvre pas !!!
   os = new FileOutputStream(String.format("/sdcard/toto_%d.jpg", System.currentTimeMillis()));
   os.write(_data);
   os.flush();
   os.close();
  } catch (FileNotFoundException e) {
   Log.e(getClass().getSimpleName(),
	 "Fichier non trouvé à l'ecriture de l'image", e);
  } catch (IOException e) {
   Log.e(getClass().getSimpleName(),
	 "Erreur E/S à l'enregistrement de l'image", e);
  }

Mais comme précisé ds le code, je ne comprends pas pourquoi je n'arrive pas à ouvrir le fichier, bien créé sur ma mémoire, sensé être une image ...

Je suis sûre que ça ne doit pas être grand chose mais quoi ... Please Help me !!

:)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...