2015-07-13 4 views
0

Я пытаюсь сделать снимок с камеры нажатием кнопки и установить ее в режиме просмотра изображения на Activity, но изображения не установлены на изображении. Мне нужно установить его как миниатюру. Облицовка одной и той же проблемы в случае загрузки. Пожалуйста, разрешите это.Изображение не установлено в представлении изображения после съемки с камеры

Это мой код:

private static final int CAMERA_PIC_REQUEST = 1111; 


takephoto.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
      } 
     }); 

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

       Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
       iv.setImageBitmap(thumbnail); 
       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
       File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 
       try { 
        file.createNewFile(); 
        FileOutputStream fo = new FileOutputStream(file); 
        fo.write(bytes.toByteArray()); 
        fo.close(); 
       } 
       catch (IOException e) 
       { 

        e.printStackTrace(); 
       } 
      } 
    } 
+0

Есть ли фотография? Взгляните на этот [ответ] (http://stackoverflow.com/a/19650714/4385913) –

+0

yes.but, когда я пытаюсь установить его в imageview.image не установлено. Я думаю, что это его размер. –

ответ

0

Следующий код поможет вам:

public class MyCameraActivity extends Activity { 
    private static final int CAMERA_REQUEST = 1000; 
    private ImageView imageView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     this.imageView = (ImageView)this.findViewById(R.id.imageView1); 
     Button photoButton = (Button) this.findViewById(R.id.button1); 
     photoButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 
     }); 
    } 

    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); 
     } 
    } 
} 

Ниже XML:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
     <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/photo"></Button> 
     <ImageView android:id="@+id/imageView1" android:layout_height="wrap_content" android:src="@drawable/icon" android:layout_width="wrap_content"></ImageView> 

</LinearLayout> 

Добавить в Manifest.xml:

<uses-feature android:name="android.hardware.camera"></uses-feature> 
+0

Я уже пробовал этот код. bУстановленное неподвижное изображение в режиме просмотра изображений. Я думаю, из-за его больших размеров. Мне нужен образ в виде миниатюры. –

+0

Вы можете использовать код для изменения размера: http://stackoverflow.com/questions/8471226/how-to-resize-image-bitmap-to-a-given-size –

0

попробовать этот

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_PIC_REQUEST) { 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      mImage.setImageBitmap(thumbnail); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
      File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 
      try { 
       file.createNewFile(); 
       FileOutputStream fo = new FileOutputStream(file); 
       fo.write(bytes.toByteArray()); 
       fo.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 

и добавить к вашему manifiest

<uses-feature android:name="android.hardware.camera"></uses-feature> 
0

Это может быть большой проблемой размера изображения. Попробуйте этот код, чтобы уменьшить размер изображения.

  Bitmap photo; 
      File file = new File(picturePath); 
      int file_size = Integer 
        .parseInt(String.valueOf(file.length()/1024)); 
      if (file_size > 2048) 
      { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 4; 
       photo = BitmapFactory.decodeFile(picturePath, options); 
      } else if (file_size > 1024) 
      { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 2; 
       photo = BitmapFactory.decodeFile(picturePath, options); 
      } else 
       photo = BitmapFactory.decodeFile(picturePath); 
      iv.setImageBitmap(photo); 
Смежные вопросы