来自iOS相机的图像在Web应用程序中旋转发送

时间:2014-03-20 14:46:43

标签: ios uiimagepickercontroller jpeg exif uiimageorientation

我正在使用HTML5 for iPad构建应用程序,以将图片上传到服务器。当我单击这样的输入文件元素时:

<input id='fileup' type='file' accept='image/*' name='upf' onchange='abv();'/>

它可以从设备相机拍摄照片或从现有相机上传。然而,在拍摄照片时,基于拍摄照片时设备的方向旋转所得到的图像。我想要做的是弄清楚捕获图像的方向,并尝试在服务器端旋转它。

请注意,我无法访问任何iOS工具或框架,因为此应用程序完全基于Web。

那么,有没有关于我可以在客户端或服务器端访问的图片方向的信息,这样我就可以将图像旋转到正确的位置?我听说过EXIF数据,但我不确定如何访问它,以及是否能提供所需的信息。

我在服务器端使用python,但也欢迎使用C / C ++中的解决方案。

感谢。

1 个答案:

答案 0 :(得分:1)

  

我在服务器端使用python

因此,您可以使用jpegtran-cffi Python包来提供执行EXIF 自动转换的功能:

# jpegtran can transform the image automatically according to the EXIF
# orientation tag
photo = JPEGImage(blob=requests.get("http://example.com/photo.jpg").content)
print photo.exif_orientation  # "6" (= 270°)
print photo.width, photo.height # "4320 3240"
corrected = photo.exif_autotransform()
print corrected.exif_orientation  # "1" (= "normal")
print corrected.width, corrected.height  # "3240 4320"

注意:摘自README。


作为替代方案,还有一个名为jhead的便捷命令行工具,您可以将其用于同一目的:

#    Remove EXIF orientation
#    i.e. rotate the image accordingly and reset the orientation
#    flag to 1 (default, i.e. origin = TopLeft)
#    WARNING: the image file is overwritten!
#    NOTE: it also works with a wildcard: jhead -autorot *.jpg
jhead -autorot myimage.jpg