2013-07-27 2 views
3

Я использую камеру в своем приложении. Мне нужно сделать снимок и отобразить его в imageview. Я использую следующий код, чтобы сделать снимок с камеры и отобразить его.ImageView не отображается Изображение

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri); 
    startActivityForResult(intent, 0); 
    imageView.setImageURI(capturedImageUri); 

Это работает только для двух или иногда три картинки, то imageview не показывает изображение, но изображение правильно stored in SD card. В качестве альтернативы я также использовал

BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options); 
    Imageview.setImageBitmap(bitmap); 

Но я столкнулся с той же проблемой. Кто-нибудь может мне помочь.

+0

являются ли какие-либо ошибки, показывая в LogCat? – JoxTraex

+0

У вас есть ошибки? Похоже, вы пытаетесь отобразить полноразмерное изображение, сделанное камерой, которое будет потреблять чрезмерное количество памяти. – Kai

+0

Нет. В нем нет ошибок. Я также проверил размер файла. его почти то же самое с отображаемым изображением. и я тоже попытался сжать. все же я столкнулся с той же проблемой. – Mathan

ответ

0

Вы пробовали положить вашу setImageUri логику в деятельности обратного вызова onActivityResult

Я думаю, что вы пытаетесь поставить изображение в ImageView, прежде чем какое-либо содержимое сохраняется в этом URI. Вам нужно подключить в функцию обратного вызова, которая получает срабатывает, когда камера на самом деле сделать снимок (т.е. отделок камеры деятельности и сообщает ее результат)

Этот ответ имеет полный подправить

https://stackoverflow.com/a/5991757/418505

возможно что-то как

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
     imageView.setImageBitmap(photo); 
    } 
} 
+0

Hi Selecsosi, Спасибо за ваш ответ. Я использовал Ваше предложение. все еще проблема есть. – Mathan

1
capturedImageUri will return path to captured Image not the actual Image.. 

Кроме того, важно Note-- Если вам не нужно полноразмерное изображение потребительных

// cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); Comment this line 
    Bitmap image = (Bitmap) data.getExtras().get("data"); 

Чтобы получить полноразмерную Bitmap Используйте следующие код-

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       try 
       { 
        // place where to store camera taken picture 
        tempPhoto = createTemporaryFile("picture", ".png"); 
        tempPhoto.delete(); 
       } 
       catch(Exception e) 
       { 

        return ; 
       } 
       mImageUri = Uri.fromFile(tempPhoto); 
       cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); 
       startActivityForResult(cameraIntent, 1); 

private File createTemporaryFile(String part, String ext) throws Exception 
    { 
      // File to store image temperarily. 
     File tempDir= Environment.getExternalStorageDirectory(); 
     tempDir=new File(tempDir.getAbsolutePath()+"/.temp/"); 
     if(!tempDir.exists()) 
     { 
      tempDir.mkdir(); 
     } 
     return File.createTempFile(part, ext, tempDir); 
    } 




    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

      ContentResolver cr = getApplicationContext().getContentResolver(); 
      try { 
       cr.notifyChange(mImageUri, null); 
       File imageFile = new File(tempPhoto.getAbsolutePath()); 


      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      Bitmap photo=null; 
      if (resultCode == 1) { 
       try { 
        photo = android.provider.MediaStore.Images.Media.getBitmap(cr, Uri.fromFile(tempPhoto)); 
imageView.setImageBitmap(photo); 
       } catch (FileNotFoundException e) { 

        e.printStackTrace(); 
       } catch (Exception e) { 

        e.printStackTrace(); 


} 
+0

Hi Amol Спасибо за ваш ответ. но все же я столкнулся с той же проблемой. – Mathan

+1

@Mathan Вам нужно полноразмерное изображение? или вы в порядке с миниатюрами? Потому что добавление 'intent.putExtra (MediaStore.EXTRA_OUTPUT, captureImageUri);' вернет полноразмерное изображение. –

+0

см. Отредактированный код. –

Смежные вопросы