问题描述
我现在用的是jengelsma code,从这篇文章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相机意向返回全尺寸图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!