0

I'm trying to upload some photo from a mobile using jquery mobile and php but after uploading my photo it's always in landscape format even if my photo is in portrait format on my iphone !

So i can't know which one must be rotated or no .

Thanks

4

1 回答 1

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 标头的浏览器不会以任何不同的方式显示它。

剩下要做的就是根据标签值使用正确的参数执行脚本。

希望这可以帮助!

于 2013-03-01T23:36:27.907 回答