Calling camera from an activity, capturing an image and uploading to a server

后端 未结 2 1323
悲&欢浪女
悲&欢浪女 2020-12-01 04:21

In my app, I have a button1 which calls camera, and after capturing the image, it must be saved to the device gallery. When I click on button2, it must open the gallery, and

相关标签:
2条回答
  • 2020-12-01 04:44

    Capture Image:

      public class Camera extends Activity 
      {
     private static final int CAMERA_REQUEST = 1888;
     private String selectedImagePath;
     WebView webview;
     String fileName = "capturedImage.jpg";
     private static Uri mCapturedImageURI; 
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Intent cameraIntent = new Intent(ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_REQUEST);
    }
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == RESULT_OK) {
            if (requestCode == CAMERA_REQUEST) 
            { 
                Bitmap photo = (Bitmap) data.getExtras().get("data"); 
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                photo.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
                Random randomGenerator = new Random();randomGenerator.nextInt();
                String newimagename=randomGenerator.toString()+".jpg";
                File f = new File(Environment.getExternalStorageDirectory()
                                        + File.separator + newimagename);
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //write the bytes in file
    
                try {
                    fo = new FileOutputStream(f.getAbsoluteFile());
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    fo.write(bytes.toByteArray());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                    uri=f.getAbsolutePath(); 
        //this is the url that where you are saved the image
          }
    
    
    
      }
    

    Choose Image:

       public class ChoosePicture extends Activity 
       {
          private static final int SELECT_PICTURE = 1;
          private String  selectedImagePath;
    
          @Override
          public void onCreate(Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              webview=(WebView)findViewById(R.id.webView1);
              Intent intent = new Intent();
              intent.setType("image/*");
              intent.setAction(Intent.ACTION_GET_CONTENT);
              intent.addCategory(Intent.CATEGORY_OPENABLE);
              startActivityForResult(intent, SELECT_PICTURE);
          }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            if (resultCode == RESULT_OK) {
                if (requestCode == SELECT_PICTURE)
                {
                    Uri selectedImageUri = data.getData();
                    selectedImagePath = getPath(selectedImageUri);
                    try {
                        FileInputStream fileis=new FileInputStream(selectedImagePath);
                        BufferedInputStream bufferedstream=new BufferedInputStream(fileis);
                        byte[] bMapArray= new byte[bufferedstream.available()];
                        bufferedstream.read(bMapArray);
                        Bitmap bMap = BitmapFactory.decodeByteArray(bMapArray, 0, bMapArray.length);
      //this is the image that you are choosen
    
                        if (fileis != null) 
                        {
                            fileis.close();
                        }
                        if (bufferedstream != null) 
                        {
                            bufferedstream.close();
                        }
                    } catch (FileNotFoundException e) {                 
                        e.printStackTrace();
                    } catch (IOException e) {                   
                        e.printStackTrace();
                    }               
                }
            }
        }
    
    
    public String getPath(Uri uri) {
            String[] projection = { MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(uri, projection, null, null, null);
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        }
    }
    
    0 讨论(0)
  • 2020-12-01 04:49

    in my case i use this: when i click on save button pic is save and return me path in filePath variable.

    String filePath =
            Environment.getExternalStorageDirectory() +"/your_image_name.jpeg";
    File file = new File(filePath);
    Uri output = Uri.fromFile(file);
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, output);
    

    and in onactivityresul() i use this "filePath" .

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