如何让Android相机意向返回全尺寸图片 [英] How to make Android Camera Intent return full size picture

查看:108
本文介绍了如何让Android相机意向返回全尺寸图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我现在用的是jengelsma code,从这篇文章<一个href="http://stackoverflow.com/questions/5991319/capture-image-from-camera-and-display-in-activity">Capture图像从摄像机和显示器在活动以从相机获得的图像。

I am using the jengelsma code from this post Capture Image from Camera and Display in Activity to get an image from the camera.

当我得到返回的图像只是一个小小的,当我尝试将其展开我瞬间失去了图像质量。

When I get the returned image it is only small and when I try to expand it I instantly lose the image quality.

我认为这仅仅是preVIEW大小,但是我一直无法找出返回大的图像,因为它是这样的,我需要对其进行操作。

I assume that this is only the preview size however I have been unable to find out to return the large image as it is this I need in order to manipulate it.

有关参考code是:

package edu.gvsu.cis.masl.camerademo;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MyCameraActivity extends Activity {
private static final int CAMERA_REQUEST = 1888; 
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);
    }  
} 
}

任何帮助非常AP preciated。

Any help greatly appreciated.

推荐答案

您需要做一些额外得到一个全图,不通过它的意图,但其存储在一个文件中。

You have to do a bit extra to get a fullsize picture, it doesn't pass it in the Intent, but stores it in a file.

要启动相机这一点,添加一个额外的到你的意图:

To start the camera for this, add an extra to your Intent:

Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE );

fileUri = getOutputMediaFileUri();
intent.putExtra( MediaStore.EXTRA_OUTPUT, fileUri );

getOutputMediaFileUri是这样的:

getOutputMediaFileUri looks like:

/** Create a file Uri for saving an image or video */
private static Uri getOutputMediaFileUri(){
  return Uri.fromFile(getOutputMediaFile());
}

/** Create a File for saving an image or video */
private static File getOutputMediaFile(){
    // To be safe, you should check that the SDCard is mounted
    // using Environment.getExternalStorageState() before doing this.

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
          Environment.DIRECTORY_PICTURES), "MyCameraApp");
    // This location works best if you want the created images to be shared
    // between applications and persist after your app has been uninstalled.

    // Create the storage directory if it does not exist
    if (! mediaStorageDir.exists()){
        if (! mediaStorageDir.mkdirs()){
            Log.d("MyCameraApp", "failed to create directory");
            return null;
        }
    }

    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File mediaFile = new File(mediaStorageDir.getPath() + File.separator +
        "IMG_"+ timeStamp + ".jpg");

    return mediaFile;
}

当然,你可以修改你想修改命名但是创建文件的方法。

Naturally you can modify the method that creates the file however you like to modify the naming.

然后在你的onActivityResult,你可以通过简单地调用的getData()的意图得到URI的图片。

Then in your onActivityResult you can get the URI to the picture by simply calling getData() on the Intent.

这篇关于如何让Android相机意向返回全尺寸图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆