gpt4 book ai didi

java - 如何解决java中上传图片自动旋转问题

转载 作者:行者123 更新时间:2023-12-01 20:09:19 36 4
gpt4 key购买 nike

我使用 javavaadin 14 作为 Web 框架。在 vaadin 中,我使用 Vaadin Uploader 组件从 Android 手机上的相机或图片库上传图像。当我从图库中选择图像时,它会被上传并正常显示。但是,当我尝试从特定设备(三星)中的手机摄像头上传图像时,上传的图像会自动旋转,这意味着,如果以横向拍摄,则上传的图像以纵向显示,如果以纵向拍摄,则显示横向。怎么解决?

Note: It does not happen in all android devices. Only in samsung android devices like samsung 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());
}

最佳答案

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

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 目录,您应该检测其方向并像此代码一样旋转。祝你好运。

关于java - 如何解决java中上传图片自动旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58970433/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com