在JavaScript中确定照片的方向
Determine orientation of photos in JavaScript?
我们使用FileReader
从iPhone上拍摄的照片中获取图像到浏览器中。然后我们使用drawImage()
将该图像绘制到canvas
上。问题是在iPhone屏幕上拍摄的照片会在页面上旋转。我们无法在任何Android设备上复制此内容。
我们可以很容易地在canvas
上旋转图像,但是我们如何确定所需的旋转?我们尝试了一些用于JavaScript的exif读取库(exif.js),但无法成功读取方向。
好的,看起来实际上可以使用exif.js读取exif数据。
$("input").change(function() {
var file = this.files[0];
fr = new FileReader;
fr.onloadend = function() {
var exif = EXIF.readFromBinaryFile(new BinaryFile(this.result));
alert(exif.Orientation);
};
fr.readAsBinaryString(file);
});
此代码使用exif.js和binaryajax.js。
这个可以用,但是只能用,如果你在ios上拍摄的照片。我认为android只是旋转实际的图像,方向总是1,所以他们甚至没有写出方向来退出。因此,我们被愚弄了,以为它不起作用。
对于有方向的图像,该值是可读的,可以解释如下(这些是F的btw):
1 2 3 4 5 6 7 8
888888 888888 88 88 8888888888 88 88 8888888888
88 88 88 88 88 88 88 88 88 88 88 88
8888 8888 8888 8888 88 8888888888 8888888888 88
88 88 88 88
88 88 888888 888888
即使没有binaryajax.js也能正常工作
直接用
EXIF.getData(changeEvent.target.files[0], function () {
alert(EXIF.pretty(this));
});
这里你还可以看到另一个例子
或者如果你只想使用Orientation标签:
EXIF.getData(file, function () {
alert(this.exifdata.Orientation);
});
我的两分钱是exif-js框架不适合我,不是必需的。
相反,你可以做的是'onload'你的图像src,创建一个画布,然后绘制你的画布在你的图像,这完成的是摆脱任何iphone相关的'exif'旋转图像,因为画布drawImage擦除exif数据。
当绘制完成时,你会看到你的图像'旋转'回到它在PC浏览器上的样子
相关文章:
- ng映射方向备选方案
- 漂亮照片图片库中的Facebook赞按钮
- 图片照片库
- RubyonRails——构建交互式接口应该朝哪个方向发展
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 将照片从javascript发送到php
- 我怎样才能知道用户滑动的方向
- 是否可以创建一个带有进度条的跨浏览器AJAX照片上传器
- 照片滑块的条件语句
- 为什么缩放按钮不会显示在照片擦除中
- 使用谷歌地图API和phonegap显示当前位置+方向
- 如何使用默认的网络摄像头拍摄照片并将其保存在我的c#.net web应用程序中
- 用真或假初始化变量是否在 Javascript 中建立了内容的方向
- 带有自定义标记的谷歌地图方向APIv3
- 在角度方向的元素之前插入
- 更改D3方向力图中箭头标记的方向
- fullpage.js在滚动时更改滚动方向
- 在JavaScript中确定照片的方向
- 方向错误的照片