提高android应用程序中以编程方式捕获的图像的质量

提高android应用程序中以编程方式捕获的图像的质量,android,android-camera,Android,Android Camera,我在我的应用程序中集成了摄像头,使用该摄像头拍摄的图像是模糊的。任何改善拍摄图像质量的建议。 我使用multipart在服务器上发送图像 代码片段 在本文中找到一个类图像选择器 所有的事情都在这门课上处理 如何使用 private static final int PICK_IMAGE_ID = 234; // the number doesn't matter public void onPickImage(View view) { Intent chooseImageInt

我在我的应用程序中集成了摄像头,使用该摄像头拍摄的图像是模糊的。任何改善拍摄图像质量的建议。 我使用multipart在服务器上发送图像

代码片段


在本文中找到一个类图像选择器

所有的事情都在这门课上处理

如何使用

 private static final int PICK_IMAGE_ID = 234; // the number doesn't matter

  public void onPickImage(View view) {
    Intent chooseImageIntent = ImagePicker.getPickImageIntent(this);
    startActivityForResult(chooseImageIntent, PICK_IMAGE_ID);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
        case PICK_IMAGE_ID:
            Bitmap bitmap = ImagePicker.getImageFromResult(this, resultCode, data);
            // TODO use bitmap
            break;
        default:
            super.onActivityResult(requestCode, resultCode, data);
            break;
    }
  }
如果您想将实际拍摄的图像传送到服务器,您需要创建 形象

试试这个代码

Delcare这个变量

private String actualPictureImagePath = "";
然后在按钮上调用此方法,然后单击cameraIntent

然后在onActivityResult中处理此问题

@override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1) {
        File imgFile = new  File(actualPictureImagePath);
            if(imgFile.exists()){        
          InputStream inputStream = null;//You can get an inputStream using any IO API
inputStream = new FileInputStream(imgFile.getAbsolutePath());
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
Base64OutputStream output64 = new Base64OutputStream(output, Base64.DEFAULT);
try {
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        output64.write(buffer, 0, bytesRead);
    }
} catch (IOException e) {
    e.printStackTrace();
}
output64.close();

String base64String = output.toString();

            }
        }

    }
这是用于位图到Base64的代码

注:-

不要忘记在清单中添加运行时权限

1读写任务

2卡迈拉个人


有人能帮我吗?你想上传从相机拍摄的真实图像吗?@GarrimaKakkr检查这个@GarrimaKakkr,还有这个@NileshRathod谢谢
private void cameraIntent() {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = timeStamp + ".jpg";
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    actualPictureImagePath = storageDir.getAbsolutePath() + "/" + imageFileName;
    File file = new File(pictureImagePath);
    Uri outputFileUri = Uri.fromFile(file);
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);               
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(cameraIntent, 1);
}
@override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1) {
        File imgFile = new  File(actualPictureImagePath);
            if(imgFile.exists()){        
          InputStream inputStream = null;//You can get an inputStream using any IO API
inputStream = new FileInputStream(imgFile.getAbsolutePath());
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
Base64OutputStream output64 = new Base64OutputStream(output, Base64.DEFAULT);
try {
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        output64.write(buffer, 0, bytesRead);
    }
} catch (IOException e) {
    e.printStackTrace();
}
output64.close();

String base64String = output.toString();

            }
        }

    }
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
          myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm 
          is the bitmap object   
          byte[] byteArrayImage = baos.toByteArray(); 
          String encodedImage = Base64.encodeToString(byteArrayImage, 
          Base64.DEFAULT);