在客户端从base64图像字符串中提取exif(使用javascript或jquery)

时间:2014-01-10 15:33:49

标签: javascript image-processing base64

我有一个网站,允许通过

上传照片
<input type="file">

onChange,我的javascript获取上传的图片,将其转换为base64,并将其显示为html的背景。

冷却。

问题:当我将这些照片放在html元素上时,在移动设备上拍摄的照片会侧面显示或上下颠倒(“旋转”)。

我一直在做研究,并且发现解决方法是从图像文件中读取EXIF值,该图像文件保留了在屏幕上显示图像时应该采用哪种方式的答案。

过去3天我一直试图提取base64图片的exif值,但还没有走得太远。

我尝试使用一个库exif.js,但是在我的回归中遇到了一些无法识别的字符:

<script>            
    var isaacImg = "data:image/gif;base64,R0lGODlh...hB0SlBCBMQiB0UjIQA7"
    var x = decode64(isaacImg);
    console.log(x);
</script>

我还尝试了this stackOverflow answer中的以下代码,但我的浏览器无法识别对象EXIF:

<script>
    var b64 = "data:image/jpeg;base64,/9j/4AAQSkZJRgABA......";
    var bin = atob(b64.split(',')[1]);
    var exif = EXIF.readFromBinaryFile(new BinaryFile(bin));
    alert(exif.Orientation); 
</script>

2 个答案:

答案 0 :(得分:0)

您需要导入一个为您提供EXIF对象的JavaScript库。在页面中包含类似的内容:

&lt; script src =&#34; path / library-min.js&#34;&gt;&lt; / script&gt;

其中path可以是多种内容:如果您自己提供库,则CDN URL或相对于您自己的服务器URL路径的路径。 library-min.js不是EXIF库的名称,只是一个示例名称。

答案 1 :(得分:-1)

我发现以下用于base64转换的库适合我的要求。 http://jsbase64.codeplex.com/。您可能也想尝试一下。