我正在使用ImageCapture api从用户设备的摄像头捕获屏幕快照。
问题是,在android上拍摄的照片旋转不正确。在图片预览之前,上传之前和上传之后,它们的旋转均不正确。
我的计划是从我从图像捕获中获得的Blob中读取exif数据,在exif中找到方向,然后使用javascript正确旋转图像,但是没有可用的exif数据,因为它不是jpg。
我的代码:
function takePhoto(img) {
imageCapture.takePhoto()
.then(blob => {
// EXIF.getData(blob, function() {
// myData = this;
// console.log( myData );
// });
let url = window.URL.createObjectURL(blob);
img.src = url;
console.log( blob );
// stop the camera and hide canavas
stream.getVideoTracks()[0].stop();
$("#webcam").hide();
image = blob;
$("#photo-info").slideDown('slow');
})
.catch(function (error) {
console.log(error);
});
};
takePhoto(document.querySelector('#camera-feed'));
使用ImageCapture时是否可以检测图像是否旋转不正确?
取决于您所使用的设备,分两步拍摄后应对图像进行处理:
要验证照片是否旋转,您可以使用ExifInterface,而旋转可以使用矩阵将其反转并与位一起播放
您可以在this question中找到更多相关信息和代码示例