Android相机:拍照后获取图片Uri
Posted
技术标签:
【中文标题】Android相机:拍照后获取图片Uri【英文标题】:Android Camera: Get Picture Uri after the photo is taken 【发布时间】:2015-11-27 10:42:50 【问题描述】:用户在 android 中使用 SurfaceView 拍照后,我需要获取图像的文件路径 Uri。我需要这个,以便我可以在另一个视图中显示图像。
这是我当前的代码:
captureImage.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
mCamera.takePicture(null, null, jpegCallback);
);
mSurfaceView.getHolder().addCallback(this);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera = Camera.open();
jpegCallback = new PictureCallback()
public void onPictureTaken(byte[] data, Camera camera)
try
Intent i = new Intent(CameraActivity.this, ImageEditor.class);
//i.putExtra("image", I_need_to_send_the_Uri);
startActivityForResult(i, 0);
catch (Exception e)
e.printStackTrace();
;
@Override
public void surfaceCreated(SurfaceHolder holder)
try
mCamera.setPreviewDisplay(mSurfaceView.getHolder());
catch (Exception e)
e.printStackTrace();
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
Camera.Parameters params = mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
Camera.Size selected = sizes.get(0);
params.setPreviewSize(selected.width, selected.height);
mCamera.setParameters(params);
mCamera.setDisplayOrientation(90);
mCamera.startPreview();
如何从中获取图像 Uri?或者您建议在另一个视图中打开图像的其他方法是什么?我尝试发送 byte[] 数组和位图,但它太重而无法在视图之间传输,这是不好的做法。如果可以,请帮忙:)
【问题讨论】:
【参考方案1】:首先,您需要将数据保存到文件中并将其存储到设备存储中。
PictureCallback mPicture = new PictureCallback()
@Override
public void onPictureTaken(byte[] data, Camera camera)
File pictureFile = getOutputMediaFile();
if (pictureFile == null)
return;
try
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
catch (FileNotFoundException e)
catch (IOException e)
;
private static File getOutputMediaFile()
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"MyCameraApp");
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;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
return mediaFile;
通过此代码从文件中获取 Uri
Uri.fromFile(Filename);
【讨论】:
你知道如何将这个 Uri 对象传递给另一个活动吗? 我不行,然后试试这些答案。 ***.com/questions/2174732/…***.com/questions/3004713/… 将 Uri 添加到 extras in Intent 请参阅 this 答案 伙伴,当我尝试将 Uri 设置为 imageview 时,没有任何反应。当我记录它时,路径已正确打印,但我似乎无法将其设置为图像视图。我也尝试将其转换为位图。你能帮忙吗? 漂亮的答案!以上是关于Android相机:拍照后获取图片Uri的主要内容,如果未能解决你的问题,请参考以下文章