2014-11-04 135 views
0

我想借此与Android相机这样的照片:拍摄照片,并显示在ImageView的

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

this.startActivityForResult(intent, Globals.REQUEST_CODE_CAMERA) 

并将其存储在一个ImageView的:

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == Globals.REQUEST_CODE_CAMERA) { 
     if(resultCode == RESULT_OK) { 
      Bundle bundle = data.getExtras(); 
      Bitmap bitmap = (Bitmap) bundle.get("data"); 

      this.imageViewPhoto.setImageBitmap(bitmap); 
     } 
    } 
} 

我ImageView的配置像这样:

<ImageView 
     android:id="@+id/nfcresult_imageview_photo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" 
     android:adjustViewBounds="true" 
     android:clickable="true" 
     android:contentDescription="@string/imageview_photo_description" /> 

的所有作品,但是对ImageView的显示的照片比小得多0相机拍摄的照片。我想要做的是在我的 ImageView中预览一个小图片,并在ImageView中添加一个OnClickListener来打开一个对话框 ,它显示原始大小和分辨率的原始照片。它不能 难以做到这一点,但我实际上不能找出如何。

创建对话框并显示照片我这样做:

ImageView clone = new ImageView(this); 
clone.setImageBitmap(((BitmapDrawable)this.imageViewPhoto.getDrawable()).getBitmap()); 

DialogManager.showImageDialog(this, this.getResources().getString(R.string.title_photo), clone); 

的showImageDialog:

public static void showImageDialog(Context context, String title, ImageView imageView) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 

    builder.setTitle(title); 
    builder.setCancelable(false); 
    builder.setView(imageView); 
    builder.setPositiveButton(context.getResources().getString(R.string.button_back), new DialogInterface.OnClickListener() { 
     /** 
     * 
     */ 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    builder.create().show(); 
} 

对话框现在显示存储在ImageView的照片大小的照片 但我想显示原始大小和原始分辨率的原始照片 ,但正如我已经说过的,ImageView应显示原始 照片的较小版本。

我该如何做到这一点?

+0

http://androidexample.com/Camera_Photo_Capture_And_Show_Captured_Photo_On_Activity_/index.php?view=article_discription&aid=77&aaid=101 – 2014-11-04 07:41:02

+0

http://stackoverflow.com/questions/5991319/capture-image -from-camera-and-in-activity – 2014-11-04 07:43:01

+0

Thank you for the links ... but much deprecated stuff there ... – Mulgard 2014-11-04 08:17:39

回答

0

解决方案:

/** 
* 
*/ 
private void performAddPhoto() { 
    String timeStamp = Clock.getTimeStamp(); 
    String fileName = "Food_Shot_" + timeStamp + ".jpg"; 

    this.imagePath = Environment.getExternalStorageDirectory() + "/images/" + fileName; 

    File file = new File(this.imagePath); 
    file.getParentFile().mkdirs(); 

    try { 
     file.createNewFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 

    startActivityForResult(intent, Globals.REQUEST_CODE_CAMERA); 
} 

/** 
* 
*/ 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == Globals.REQUEST_CODE_CAMERA) { 
     if(resultCode == RESULT_OK) { 
      this.onPhotoTaken(); 
     } 
    } 
} 

/** 
* 
*/ 
private void onPhotoTaken() { 
    this.imageTaken = true; 

    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inSampleSize = 4; 

    Bitmap bitmap = BitmapFactory.decodeFile(this.imagePath, options); 
    this.imageViewPhoto.setImageBitmap(bitmap); 
} 

/** 
* 
*/ 
private void performShowPhoto() { 
    ImageView imageView = new ImageView(this); 
    Bitmap bitmap = BitmapFactory.decodeFile(this.imagePath); 

    imageView.setImageBitmap(bitmap); 

    DialogManager.showImageDialog(this, this.getResources().getString(R.string.title_photo), imageView); 
} 
0

代替机器人:layout_width =“WRAP_CONTENT”设置ImageView的宽度和高度,以具体的DP值

<ImageView 
     android:id="@+id/nfcresult_imageview_photo" 
     android:layout_width="100dp" 
     android:layout_height="200dp" 
     android:src="@drawable/ic_launcher" 
     android:adjustViewBounds="true" 
     android:clickable="true" 
     android:contentDescription="@string/imageview_photo_description" /> 

保持高度和宽度的高宽比(而不是100和200,选择合适的值)

+0

错误的wrap_content contant也是可行的 – 2014-11-04 07:41:43

0

你必须在你的意图中额外添加一个名为“MediaStore.EXTRA_OUTPUT”,你必须设置一个uri来存储图片。 你的回调函数被调用后,你可以从选择的uri中加载图片。 在这里你可以得到完整分辨率的照片。

相关问题