how to save capture image in sdcard?

后端 未结 6 2057
旧巷少年郎
旧巷少年郎 2021-01-27 11:19

I want to use default camera and capture image. i want save image in sdcard/photofolder/ and save filename as curenttime format in sdcard/photofolder/ also display capture imag

相关标签:
6条回答
  • 2021-01-27 11:34

    Try this

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

    To get the bitmap

    @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;
            }
        }
    
    0 讨论(0)
  • 2021-01-27 11:37

    You can get SDCard path like..

    String root = Environment.getExternalStorageDirectory().toString();
    
    new File(root + "/photofolder").mkdirs();
    

    Then you can save a file to root + "/photofolder/20120830025700.jpg".


    Have you requested permission to write onto SD card? Add the following string to you app manifest:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    0 讨论(0)
  • 2021-01-27 11:41

    Use this code to save image into SDcard and also create directory to store the captured image

      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);   
           }  
    

    To display the captured image use the below code

     @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);
     }
     }
     }
    
    0 讨论(0)
  • 2021-01-27 11:45

    below code can help u

        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");
         }  
    }
    
    0 讨论(0)
  • 2021-01-27 11:53

    try using this in onActivityResult()

    setupImage(photo);
    

    and

    public Bitmap setupImage(Intent data) { 
          BitmapFactory.Options options = new BitmapFactory.Options(); 
          options.inSampleSize = SAMPLE_SIZE;     // SAMPLE_SIZE = 2 
    
          Bitmap tempBitmap = null; 
          Bitmap bm = null; 
          try { 
           tempBitmap = (Bitmap) data.getExtras().get("data");
            bm = tempBitmap; 
    
            Log.v("ManageImage-hero", "the data.getData seems to be valid"); 
    
            FileOutputStream out = new FileOutputStream(outputFileUri.getPath()); 
            tempBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
          } catch (NullPointerException ex) { 
            Log.v("ManageImage-other", "another phone type"); 
            bm = otherImageProcessing(options); 
          } catch(Exception e) { 
            Log.v("ManageImage-setupImage", "problem setting up the image"+e); 
          } 
    
          return bm; 
        } 
    private Bitmap otherImageProcessing(BitmapFactory.Options options) { 
          Bitmap bm = null; 
    
          try { 
            FileInputStream fis = new FileInputStream(outputFileUri.getPath()); 
            BufferedInputStream bis = new BufferedInputStream(fis); 
            bm = BitmapFactory.decodeStream(bis, null, options); 
    
            // cleaning up 
            fis.close(); 
            bis.close(); 
          } catch(Exception e) { 
            Log.e("ManageImage-otherImageProcessing", "Cannot load image", e); 
          } 
    
          return bm; 
        } 
    
    0 讨论(0)
  • 2021-01-27 12:01

    As example given here try this code...

    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 will return location of your image in sdcard

    0 讨论(0)
提交回复
热议问题