我正在尝试编写一个Android应用程序拍摄照片并将其保存到服务器。问题是当我保存在服务器上时,我拍摄的每张照片都旋转了-90度。知道如何在php中旋转图片或为什么它最终被旋转?
这就是我的php文件的样子:
<?php
$file_path = "photos/";
$img = $_REQUEST['base64'];
$name=$_REQUEST['ImageName'];
// Decode Image
$binary=base64_decode($img);
$success = file_put_contents($file_path.$name, $binary);
if($success === false) {
echo "Couldn't write file";
} else {
echo "Wrote $success bytes";
}
echo $name;
?>
答案 0 :(得分:2)
这不是服务器端问题,每个智能手机都可以对相机图像应用不同的方向。 当您收到图像时,您必须访问其元数据(exif data si确切名称)以验证其旋转和其他属性。然后你应该在图片上应用你需要的转换。
这应该是用PHP读取exif数据的一个很好的起点:http://php.net/manual/en/function.exif-read-data.php
答案 1 :(得分:1)
可能与图像方向有关。
试试这个
$exif = exif_read_data($file_path.$name);
$ort = $exif['IFD0']['Orientation'];
switch($ort)
{
case 3: // 180 rotate left
$image->imagerotate($file_path.$name, 180, -1);
break;
case 6: // 90 rotate right
$image->imagerotate($file_path.$name, -90, -1);
break;
case 8: // 90 rotate left
$image->imagerotate($file_path.$name, 90, -1);
break;
}