Javascript 为什么iPhone显示的图像方向正确,而桌面没有';T

Javascript 为什么iPhone显示的图像方向正确,而桌面没有';T,javascript,iphone,image,desktop,exif,Javascript,Iphone,Image,Desktop,Exif,我有一个简单的web应用程序,其中一个人拍摄一张照片,在客户端将其转换为base64字符串,然后将该字符串发送到数据库,然后通过从数据库中获取该字符串来显示在应用程序上。当我从数据库中提取base64字符串,并使用在应用程序中显示它时,它将以正确的方向呈现在iPhone上,而不是桌面上 我的印象是base64字符串不包含任何关于图像的exif数据,那么浏览器如何知道如何在iPhone中而不是在桌面上显示正确的方向呢 此外,假设我旋转图像,即根据exif数据将base64字符串转换为base64字

我有一个简单的web应用程序,其中一个人拍摄一张照片,在客户端将其转换为base64字符串,然后将该字符串发送到数据库,然后通过从数据库中获取该字符串来显示在应用程序上。当我从数据库中提取base64字符串,并使用
在应用程序中显示它时,它将以正确的方向呈现在iPhone上,而不是桌面上

我的印象是base64字符串不包含任何关于图像的exif数据,那么浏览器如何知道如何在iPhone中而不是在桌面上显示正确的方向呢

此外,假设我旋转图像,即根据exif数据将base64字符串转换为base64字符串的旋转版本,然后将其发送到数据库,那么我不会弄乱iPhone上的方向吗


如何解决这个难题?

问题在于照片是旋转的,并且嵌入了带有旋转信息的元数据。一些应用程序可以读取元数据并旋转照片。而仅仅将照片添加为
并不能做到这一点

对于旋转,您需要一个可以提取元数据的库

这方面速度很快,可以处理数百张照片,而不会使浏览器崩溃或花费很长时间:)。此外,还有一个简洁的API,您可以为它提供几乎任何东西—元素、URL、缓冲区、ArrayBuffer,甚至base64 URL或字符串等等

exifr.orientation(文件)。然后(val=>{
console.log('orientation:',val)
})
这将为您提供一个从1到8的整数(了解更多信息),只需对图像应用
transform:rotate
。或者您可以使用画布(稍微复杂一点)重新绘制它