Android 如何在SD卡中保存捕获图像?

Android 如何在SD卡中保存捕获图像?,android,android-file,Android,Android File,我想使用默认相机并拍摄图像。我希望将图像保存在sdcard/photofolder/中,并将文件名另存为sdcard/photofolder/中的curenttime格式,同时在imageview页面中显示捕获图像 Uri outputFileUri = Uri.fromFile("/sdcard/Photofolder/"); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); in

我想使用默认相机并拍摄图像。我希望将图像保存在sdcard/photofolder/中,并将文件名另存为sdcard/photofolder/中的curenttime格式,同时在imageview页面中显示捕获图像

Uri outputFileUri = Uri.fromFile("/sdcard/Photofolder/");    
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CAMERA_REQUEST);

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
            if (requestCode == CAMERA_REQUEST) {  
                Bitmap photo = (Bitmap) data.getExtras().get("data"); 
               // imageView.setImageBitmap(photo);

                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 4;
                Bitmap bitmap = BitmapFactory.decodeFile(picFileName, options);
                imageView.setImageBitmap(bitmap);
                imageView.setVisibility(View.VISIBLE);

            }  
        }
你知道这个吗??非常感谢下面的代码可以帮助你

    private void takePicture() 
        {   cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, IMAGE_CAPTURE);
        }

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_REQUEST) {   
     File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
     File output = new File(dir, "camerascript.png");
     }  
}
作为给出的示例,请尝试以下代码

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File output = new File(dir,"camera.png");

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(output));
String path =output.getAbsolutePath();
startActivityForResult(cameraIntent, TAKE_PHOTO);

path将返回您的图像在SD卡中的位置

使用此代码将图像保存到SD卡中,并创建目录以存储捕获的图像

  File photo = new File(Environment.getExternalStorageDirectory()+"/photofolder"); 
  System.out.println(photo.toString());
  boolean success = false;
  if(!photo.exists())
  { 
    success = photo.mkdirs(); 
  } 
    if(!success)
      {   

       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       photo = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Android/data/"+getApplicationContext().getPackageName()+"/files/Receipt", imagename+".png");
       Toast.makeText(this, photo.toString(), Toast.LENGTH_LONG);
       intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(photo));
       Uri imageurl = Uri.fromFile(photo);  
       startActivityForResult(intent, CAMERA_RECEIPTREQUEST);   
       }  
要显示捕获的图像,请使用以下代码

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {   
     super.onActivityResult(requestCode, resultCode, data);  

     switch(requestCode)
     {
     case CAMERA_RECEIPTREQUEST:  
         if(resultCode== Activity.RESULT_OK)
         {
             if(data!=null)   
                 { 
                         BitmapFactory.Options options = new BitmapFactory.Options();
                 options.inSampleSize = 8;
                 ImageView jpgView = (ImageView)findViewById(R.id.imageView1);
                 Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);  
                  jpgView.setImage(receipt);
 }
 }
 }
试试这个

private void cameraOn() {
            tempUri = "sdcard/......";
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        i.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);
        startActivityForResult(i, cameraData);
    }
获取位图

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case cameraData:
            if (resultCode == RESULT_OK) {
                Bitmap bmp = BitmapFactory.decodeFile(tempUri.getPath(), null);
                imageShow.setImageBitmap(bmp);
            } 
            break;
        }
    }

尝试在onActivityResult()中使用此选项


您可以获得SD卡路径,如

String root = Environment.getExternalStorageDirectory().toString();

new File(root + "/photofolder").mkdirs();
然后您可以将文件保存到
root+“/photofolder/20120830025700.jpg”


您是否已申请在SD卡上写入的权限?将以下字符串添加到应用程序清单:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


outputFileUri的值是什么?从这个问题中找到答案..要聪明。。。看看我上面的评论。。您在OP问题中的答案…谢谢兄弟,但我想将图像保存在SD卡/photofolder/中,并将图像保存为currenttime格式,如示例SD卡/photofolder/20120830025700.jpg
String root = Environment.getExternalStorageDirectory().toString();

new File(root + "/photofolder").mkdirs();
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />