Jquery移动方向上传照片

时间:2013-01-14 13:34:56

标签: php image mobile upload orientation

我正在尝试使用jquery mobile和php从手机上传一些照片但是在上传我的照片之后它总是以横向格式,即使我的照片是在我的iphone上的纵向格式!

所以我不知道哪一个必须轮换或不。

由于

1 个答案:

答案 0 :(得分:0)

我有同样的问题。我的解决方案有点快速和肮脏但是你走了:

编写要在图像加载时调用的函数,检查图像是否将以横向渲染。

 $(".imgTile").load(function(){     
    if(this.width>this.height){
        $(this).css("transform","rotate(90deg)");
        $(this).css("top",".7em");
        $(this).css("left","-.5em");
        }
     }

一些注意事项:我发现我必须做一些重新定位才能使旋转的图像适合列表视图(因此设置了顶部和左侧属性),因此您可能需要根据需要进行调整。其次,不同浏览器有不同的css“转换”属性,因此您可能需要将每个属性设置为具有跨浏览器支持。以下是有关这些属性http://www.w3schools.com/cssref/css3_pr_transform.asp

的指南 编辑:我花了一些时间,想出了一个更加可靠的解决方案。

首先,使用php阅读exif标签:

$exif=exif_read_data("uploads/$fileExtension.jpg",0,true);
$orient=$exif["IFD0"]["Orientation"];

对EXIF标准的一些研究表明,iPhone将产生的三种情况是:

1--不需要轮换 3--需要180度。回转 6--要求90度旋转

然后使用php的shell_exec运行以下shell脚本,该脚本使用imagemagick来销毁EXIF标头,并以指定的数量物理旋转图像:

#!/bin/bash                                                                     
    for i in $[filename]
            do convert -rotate $[number of degrees] $i $i
    done

mogrify -strip $[filename]

现在,图像将在任何地方正确定位,并且读取EXIF标题的浏览器不会以任何不同的方式显示它。

唯一要做的就是根据标记值使用正确的参数执行脚本。

希望这有帮助!