我使用标准的php表单上传一些图片。
问题在于,当我使用img标签显示一些图像时
<img src="http://www.example.com/image.jpg" alt="">
我得到错误的旋转,有时图像是颠倒的,有时旋转45度。
如果我通过访问
直接在浏览器中加载图像http://www.example.com/image.jpg
图像显示正确。
什么似乎是问题,我该如何解决这个问题?
答案 0 :(得分:3)
我发现了问题。没有正确显示的图像是从三星和iPhone等移动设备上传的。所以EXIF方向是移动的方向。
要查看图片的确切exif,您可以在http://regex.info/exif.cgi进行测试。即使您直接在Chrome或Firefox等浏览器中打开图像,也会看到图像的方向正确,但如果使用html img标记加载图像,则会显示exif方向。
因此,最好的解决方案是在上传图像之前检查exif方向,然后使用php函数将其转换为正确的方向。
function image_fix_orientation($path)
{
$image = imagecreatefromjpeg($path);
$exif = exif_read_data($path);
if (empty($exif['Orientation']))
{
return false;
}
switch ($exif['Orientation'])
{
case 3:
$image = imagerotate($image, 180, 0);
break;
case 6:
$image = imagerotate($image, - 90, 0);
break;
case 8:
$image = imagerotate($image, 90, 0);
break;
}
imagejpeg($image, $path);
return true;
}
// For JPEG image only
image_fix_orientation('/path/to/image.jpg');