如何获取使用相机拍摄的图像的路径? [英] How to get paths to images captured with camera?
问题描述
我正试图使用原生相机应用程序捕获多个图像。如何获取使用意图动作INTENT_ACTION_STILL_IMAGE_CAMERA捕获的图像的路径?
任何帮助将不胜感激。
BCD
在启动相机之前获取mediaStore中的图像数量
public void startCameraActivity(){
游标光标= loadCursor();
// mediaStore中的当前图片
image_count_before = cursor。 getCount将();
cursor.close();
Intent cameraIntent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
List< ResolveInfo> activities = getPackageManager()。queryIntentActivities(cameraIntent, 0 );
if (activities.size()> 0 )
startActivityForResult(cameraIntent,CAPTURE_IMAGES_FROM_CAMERA);
else
Toast.makeText( this ,getResources()。getString(R .string.no_camera_app),Toast.LENGTH_SHORT)。show();
}
onActivityResult调用方法exitingCamera
< pre lang =java> @ Override
public void onActivityResult( int requestCode, int resultCode,Intent data){
switch (requestCode){
case CAPTURE_IMAGES_FROM_CAMERA:
exitingCamera();
return ;
}
return ;
}
public Cursor loadCursor(){
final String [] columns = {MediaStore.Images.Media.DATA,MediaStore.Images.Media._ID};
final String orderBy = MediaStore.Images.Media.DATE_ADDED;
return getContentResolver()。query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,columns,null,null,orderBy);
}
public String [] getImagePaths(光标游标, int startPosition){
< span class =code-keyword> int size = cursor.getCount() - startPosition;
if (size< = 0 ) return null;
字符串 [] paths = new 字符串跨度> [大小];
int dataColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
for ( int i = startPosition; i< cursor.getCount( ); i ++){
cursor.moveToPosition(i);
paths [i - startPosition] = cursor.getString(dataColumnIndex);
}
返回路径;
}
然后可以找到新添加的图片
private void exitingCamera(){
Cursor cursor = loadCursor();
// 获取新添加图片的路径
< span class =code-sdkkeyword> String [] paths = getImagePaths(cursor,image_count_before);
// 过程图片
进程(路径);
cursor.close();
}
你能告诉我什么过程(路径)方法吗?
I'am trying to capture multiple images using a native camera app. How do I get the paths to images captured using intent action "INTENT_ACTION_STILL_IMAGE_CAMERA"?
Any help will be appreciated.
BCD
Get the number of images in the mediaStore before starting the camera
public void startCameraActivity(){ Cursor cursor = loadCursor(); //current images in mediaStore image_count_before = cursor.getCount(); cursor.close(); Intent cameraIntent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); List<ResolveInfo> activities = getPackageManager().queryIntentActivities(cameraIntent, 0); if(activities.size() > 0) startActivityForResult(cameraIntent,CAPTURE_IMAGES_FROM_CAMERA); else Toast.makeText(this, getResources().getString(R.string.no_camera_app), Toast.LENGTH_SHORT).show(); }
In onActivityResult call method exitingCamera
@Override public void onActivityResult(int requestCode, int resultCode, Intent data){ switch(requestCode){ case CAPTURE_IMAGES_FROM_CAMERA: exitingCamera(); return; } return; }
public Cursor loadCursor(){ final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID }; final String orderBy = MediaStore.Images.Media.DATE_ADDED; return getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,null,null,orderBy); }
public String[] getImagePaths(Cursor cursor, int startPosition){ int size = cursor.getCount() - startPosition; if(size <= 0) return null; String []paths = new String[size]; int dataColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); for (int i = startPosition; i < cursor.getCount(); i++) { cursor.moveToPosition(i); paths[i - startPosition]= cursor.getString(dataColumnIndex); } return paths; }
Then the newly added images can be found with
private void exitingCamera(){ Cursor cursor = loadCursor(); //get the paths to newly added images String []paths = getImagePaths(cursor,image_count_before); // process images process(paths); cursor.close(); }
Could you tell me please what process(paths) method does?
这篇关于如何获取使用相机拍摄的图像的路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!