如何解决java中上传图像的自动旋转问题

如何解决java中上传图像的自动旋转问题,java,vaadin,image-uploading,uploader,Java,Vaadin,Image Uploading,Uploader,我正在使用java和vaadin14作为web框架。 在vaadin中,我使用vaadin Uploader组件从android手机上的摄像头或图像库上传图像。 当我从gallery中选择图像时,它会被上传并正常显示。但当我试图从特定设备(三星)的手机摄像头上传图像时,上传的图像会自动旋转,这意味着,如果在横向拍摄,上传的图像会显示为纵向,如果在纵向拍摄,则显示为横向。如何解决 注意:并非所有android设备都会出现这种情况。仅适用于三星android设备,如三星s7 这是我的密码- impo

我正在使用javavaadin14作为web框架。 在vaadin中,我使用vaadin Uploader组件从android手机上的摄像头或图像库上传图像。 当我从gallery中选择图像时,它会被上传并正常显示。但当我试图从特定设备(三星)的手机摄像头上传图像时,上传的图像会自动旋转,这意味着,如果在横向拍摄,上传的图像会显示为纵向,如果在纵向拍摄,则显示为横向。如何解决

注意:并非所有android设备都会出现这种情况。仅适用于三星android设备,如三星s7

这是我的密码-

import com.vaadin.flow.component.upload.SucceededEvent;
import com.vaadin.flow.component.upload.Upload;

private void fileUploaderInit() {
        uploader = new Upload(buffer);
        uploader.setMaxFiles(1);
        uploader.setDropAllowed(false);
        uploader.setAcceptedFileTypes("image/*");
        uploader.getElement().removeProperty("capture");
        uploader.setUploadButton(image);

        uploader.addSucceededListener(event -> {
            succeedEvent = event;
            saveUploadedImage();
            setUserImage();
        });
        uploader.getElement().addEventListener("file-abort", remove -> {
            succeedEvent = null;
        });
        uploadLayout.add(uploader);
    }

    private void saveUploadedImage() {
        if (succeedEvent != null && userEntity != null) {
            addData();
            succeedEvent = null;
            Notification.show("Image saved successfully.",2000, Position.MIDDLE);
            userEvent.fire(new UserEvent(userEntity,false));
        }
        uploader.getElement().setPropertyJson("files", Json.createArray());
    }

我通常使用改型上传图像和文件,但它不是相关的上传服务。 它只是与相机图像处理有关。 让我向您展示修复旋转问题的代码

public Bitmap getImageFromPath(String photoPath) {
    Bitmap bitmap = BitmapFactory.decodeFile(photoPath);
    Bitmap rotatedBitmap = bitmap;
    ExifInterface ei = null;
    try {
        ei = new ExifInterface(photoPath);

        int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);

        switch(orientation) {

            case ExifInterface.ORIENTATION_ROTATE_90:
                rotatedBitmap = rotateImage(bitmap, 90);
                break;

            case ExifInterface.ORIENTATION_ROTATE_180:
                rotatedBitmap = rotateImage(bitmap, 180);
                break;

            case ExifInterface.ORIENTATION_ROTATE_270:
                rotatedBitmap = rotateImage(bitmap, 270);
                break;

            case ExifInterface.ORIENTATION_NORMAL:
            default:
                rotatedBitmap = bitmap;
        }
    } catch (IOException e) {

        e.printStackTrace();

    }
    return rotatedBitmap;

}
从相机拍摄完图像后,将其保存到android目录中,并检测其方向,然后像下面的代码一样旋转。
祝你好运。

如何在web框架上实现它?我认为您的解决方案与android开发相关。