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