【问题标题】:Android: improve the image quality on upload to the serverAndroid:提高上传到服务器的图像质量
【发布时间】:2016-01-26 18:49:15
【问题描述】:

我正在尝试通过将图像转换为 base64 字符串来将图像上传到我的 Android 应用程序中的服务器。在这种情况下,当我尝试上传从我的相机拍摄的图像时,我的图像质量会大大降低并且非常模糊。你能帮我解决这个问题吗?

这是我的代码:

Intent cameraIntent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(cameraIntent, CAMERA_REQUEST);

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

    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {

        Log.i("camera intent", "camera intent");

        bitmap = (Bitmap) data.getExtras().get("data");

        bitmap = Bitmap.createScaledBitmap(bitmap, 720, 1280, true);

        viewImage_imageView.setImageBitmap(bitmap);
        UploadImage_textView.setEnabled(true);


ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.JPEG, 100, bos);
    byte[] data = bos.toByteArray();
    String file = Base64.encodeToString(data, 0);
    Log.i("base64 string", "base64 string: " + file);
    new ImageUploadTask(file).execute();
    }

}

【问题讨论】:

    标签: android image bitmap base64 image-compression


    【解决方案1】:

    bitmap = (Bitmap) data.getExtras().get("data");
    这将提供相机拍摄的图像的缩略图,这就是您看到模糊图像的原因

     Intent cameraIntent = new Intent(
                        android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
     Uri tempURI = Uri.fromFile(<file path where you want to save image>);
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempURI);
     startActivityForResult(cameraIntent, CAMERA_REQUEST);
    

    那么对于这个路径,您将获得相机点击的实际图像,现在将该图像上传到服务器。

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2019-09-23
      • 1970-01-01
      • 2013-12-17
      • 2014-03-21
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多