如何获取使用相机拍摄的图像的路径? [英] How to get paths to images captured with camera?

查看:92
本文介绍了如何获取使用相机拍摄的图像的路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试图使用​​原生相机应用程序捕获多个图像。如何获取使用意图动作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屋!

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