0

我的问题是在将图像上传到服务器时,图像上传旋转。请提供任何帮助。我能得到任何帮助来纠正我的问题吗?帮帮我。而且我不知道如何使用 exif 接口来做到这一点。

Uri imagesUri = null;

if (imagesUri != null) {
setApicall();
Uri myUri = Uri.parse(imagesUri.toString());
getApicall(myUri, "My Image");
} else {
showAlert("Attention..", "Please Insert Image.");
}

public void onActivityResult(int requestCode, int resultcode, Intent data) {
    super.onActivityResult(requestCode, resultcode, data);
    if (resultcode == RESULT_OK && requestCode == PICK_IMAGE) {
        tv_add_photo.setVisibility(View.GONE);
        imagesUri = data.getData();
        image.setImageURI(imagesUri);
    }
}

private String getRealPathFromURI(Uri contentUri) {
    String[] proj = {MediaStore.Images.Media.DATA};
    CursorLoader loader = new CursorLoader(this, contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String result = cursor.getString(column_index);
    cursor.close();
    return result;
}

private void getApicall(Uri fileUri, String desc) {
    try {
        File file = new File(getRealPathFromURI(fileUri));
        //creating request body for file
        RequestBody requestFile = RequestBody.create(MediaType.parse(getContentResolver().getType(fileUri)), file);
        RequestBody descBody = RequestBody.create(MediaType.parse("text/plain"), desc);
        Log.d("Key", getContentResolver().getType(fileUri));
        Call<ImageUploadResponse> getPhotoUpload = apiInterface.uploadImage(requestFile, descBody);
        getPhotoUpload.enqueue(ImageUploadResposeCallback);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
4

1 回答 1

1

尝试以下方法以绕过图像路径的不同比例旋转图像

public static int getImageAngle(String picturePath) {
        try {
            ExifInterface ei = new ExifInterface(picturePath);
            int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    Log.i("TEST", "orientation : " + 90);
                    return 90;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    Log.i("TEST", "orientation : " + 180);
                    return 180;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    Log.i("TEST", "orientation : " + 270);
                    return 270;
                default:
                    Log.i("TEST", "orientation : " + 0);
                    return 0;
            }

        } catch (IOException e) {
            //Log.e("TEST", "" + e.getMessage());
            return 0;
        }
    }

    public static Bitmap rotateImage(Bitmap source, float angle) {
        Bitmap retVal;

        Matrix matrix = new Matrix();
        matrix.postRotate(angle);
        retVal = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
    return retVal;
}
于 2020-01-09T13:12:18.903 回答