2011-08-31 11 views
6

Chcę zaktualizować obraz z obrazka zrobionego za pomocą wbudowanego aparatu z Androidem. używam następujący kod:Pobierz obraz Uri + miniaturka zdjęcia zrobionego aparatem w Androidzie

void getPhoto() { 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, TAKE_PICTURE); 
    } 

Potem zdobyć zdjęcie z:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == TAKE_PICTURE) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      ImageView photoView = (ImageView) findViewById(R.id.photoId); 
      photoView.setImageBitmap(photo); 
      } 
     } 

Ale z tego kodu bez względu na to, co robię, mogę tylko miniaturę zdjęcie zrobiłem - mój Pytanie brzmi: w jaki sposób mogę uzyskać zdjęcie Uri zrobionego właśnie zdjęcia, aby pracować nie z miniaturą, ale z oryginalnym obrazem?

Ps. Potrzebuję miniatury zdjęcia, ale potrzebuję również Uri oryginalnego zdjęcia.

Odpowiedz

4

Umieściłem swój własny identyfikator URI w celu poinformowania go, gdzie zapisać, a następnie wiesz, gdzie to jest, nie wiesz, czy jest jakakolwiek inna metoda. Utwórz kilka pól dla pliku.

private String imagePath = "/sdcard/Camera/test.jpg"; 
private File originalFile; 

Następnie zainicjuj plik.

originalFile = new File(imagePath); 

Teraz uruchom aplikację Aparat z zamiarem, przekazując identyfikator URI jako dodatkowy.

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    Uri outputFileUri = Uri.fromFile(originalFile); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, RESULT_CAPTURE_IMAGE); 

W onActivityResult() wyodrębnić URI

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == RESULT_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK) { 
     mBitmap = BitmapFactory.decodeFile(originalImagePath, BitmapFactoryOptions); //set whatever bitmap options you need. 

Więc można teraz budować bitmapę za pomocą createBitmap lub użyć ścieżki pliku za co trzeba

+3

Także to nie jest dobra praktyka, aby ciężko kodem uri z/sdcard /, należy użyć gettera dla zmiennych środowiskowych. –

+0

Ale intencja danych ma wartość zerową, nie można pobrać miniatur. Po prostu możesz go utworzyć z pełnowymiarowego zdjęcia –

Powiązane problemy