URI bekommen nachdem man Bild gemacht hat

  • Antworten:8
  • Bentwortet
Johannes
  • Forum-Beiträge: 49

17.11.2011, 00:25:31 via Website

Hey!
also ich hole mir folgendermaßen ein Bild von der Kamera:

(im onActivityResult event)
1Bitmap photo = (Bitmap) data.getExtras().get("data");
2photo = Bitmap.createScaledBitmap(photo, 100, 100, false);
3ivPicture.setImageBitmap(photo);

so wie bekomm ich jetzt die uri von dem Bild?

Hintergrund: ich möchte die Uri oder Pfad in die DB speichern, finde allerdings nichts wie ich jetzt anhand von dem die uri rausbekomme :(

schonmal vielen Dank für eure Hilfe!

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

17.11.2011, 07:32:35 via App

Hi, kleine Zwischenfrage: was ist denn eine "uri"?

Gruß

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

17.11.2011, 07:45:39 via Website

Moin Carsten,

Zitat Wikipedia:
Ein Uniform Resource Identifier (Abk. URI; engl. für „einheitlicher Bezeichner für Ressourcen“) ist ein Identifikator und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen Ressource dient

lg Voss

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

17.11.2011, 07:50:36 via App

Hi,

Jörg V.
Moin Carsten,

Zitat Wikipedia:
Ein Uniform Resource Identifier (Abk. URI; engl. für „einheitlicher Bezeichner für Ressourcen“) ist ein Identifikator und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen Ressource dient
Aha, cool. Muss ich mir gleich mal anschauen...

Danke Dir!

Edit: interessant, hatte diese Abkürzung URI offenbar nie bewusst wahrgenommen. Und es gibt ja tatsächlich einen kleinen Unterschied zu "URL", auch wenn beide Begriffe offenbar häufig synonym verwendet werden.

Gruß
Carsten

— geändert am 17.11.2011, 07:58:15

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

17.11.2011, 08:18:56 via Website

Mit dem was du da machst, kriegst du ein LowQuality Bild direkt als byte[].
Ich glaub dazu kriegt man garkeine URI sondern nur die Daten direkt.

Bei HighQuality Bildern kriegst du hingegen NUR eine URI, weil die Datenmenge zu groß ist sie direkt im Speicher zu übergeben.
Die landen temporär auf der Speicherkarte.

Du musst im Intent noch ein spezielles Feld (EXTRA_OUTPUT) setzen, damit ein HQ Foto gemacht wird.

Siehe: http://code.google.com/p/android/issues/detail?id=1480

— geändert am 17.11.2011, 08:19:54

Antworten
Johannes
  • Forum-Beiträge: 49

17.11.2011, 15:09:32 via Website

hmm hab jetzt eure links angesehn und das gemacht, allerdings bekomm ichs nicht hin... :(

hier wie der Intend erzeugt wird:
1Intent intent_kamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
2 Uri fileUri = getOutputMediaFileUri();
3 Toast.makeText(context, "uri: " + fileUri, 100).show();
4 intent_kamera.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

dann hier die hilfsmethode für oben:

1private Uri getOutputMediaFileUri()
2 {
3 // To be safe, you should check that the SDCard is mounted
4 // using Environment.getExternalStorageState() before doing this.
5
6 File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "Shopper");
7 // This location works best if you want the created images to be shared
8 // between applications and persist after your app has been uninstalled.
9
10 // Create the storage directory if it does not exist
11 if (! mediaStorageDir.exists()){
12 if (! mediaStorageDir.mkdirs()){
13 //Toast.makeText(get, "failed to create directory", 100).show();
14 return null;
15 }
16 }
17
18 // Create a media file name
19 String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
20 File mediaFile = new File(mediaStorageDir, "Shopper_"+ timeStamp + ".jpg");
21
22 return Uri.fromFile(mediaFile);
23 }

und so will ich das bild bekommen:
1if(requestCode == 0) //Kamera
2 {
3 if(data != null)
4 {
5 //Toast.makeText(this, "Kamera back ", 100).show();
6
7 if (resultCode == RESULT_OK) {
8 // Image captured and saved to fileUri specified in the Intent
9 Toast.makeText(this, "Image saved to:\n" + data.getData(), Toast.LENGTH_LONG).show();
10}
11}
12}

das Problem ist, dass mir die methode: getOutputMediaFileUri() immer null zurück gibt :( deswegen bekomme ich dann bei onActivityResult auch null raus höchstwahrscheinlich... hat einer ne Ahnung warum??

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

17.11.2011, 15:17:14 via Website

Ich hab das bei mir auch gemacht und das funzt.
Den Code hab ich nur grad nicht parat.

EDIT: Hier nicht ein anderes Beispiel:
http://stackoverflow.com/questions/1567732/how-can-i-capture-an-image-in-android-and-have-it-show-up-in-the-gallery

— geändert am 17.11.2011, 15:19:19

Antworten
Johannes
  • Forum-Beiträge: 49

17.11.2011, 18:23:16 via Website

ha perfekt so gehts!! vielen dank!!

Antworten