Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中旋转图片一次';他得救了_Php_Image Manipulation - Fatal编程技术网

在PHP中旋转图片一次';他得救了

在PHP中旋转图片一次';他得救了,php,image-manipulation,Php,Image Manipulation,我有一个PHP脚本,可以在我的网站上保存图片。我想,一旦图片被保存,旋转90度的图片,如果它不是横向的。这是我的一段脚本: $uploadfile = 'path/where/to/save/picture.jpg'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { //The code under here is not working if($_GET['landscape']

我有一个PHP脚本,可以在我的网站上保存图片。我想,一旦图片被保存,旋转90度的图片,如果它不是横向的。这是我的一段脚本:

$uploadfile = 'path/where/to/save/picture.jpg';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    //The code under here is not working
    if($_GET['landscape'] == false || $_GET['landscape'] == 'false'){
        $img = imagecreatefromjpeg($uploadfile);
        $newimg = imagerotate($img, 90.0, 0);
        imagejpeg($newimg, $uploadfile);
    }

    //this is code under here is working
    $prev = create_preview($filename, $uploadfile, $ext, true);
}
正如您所看到的,我移动了\u上传的\u file(),然后我有一个if语句,如果图片不是横向的(所以横向==false),我旋转它。然后我创建了图片的预览

如果我注释掉检查横向的If语句,代码就会工作,因此它会上传图片,但不会按照我的要求旋转,并创建预览。如果我让If未注释(如本例中所示),它似乎不再保存,因为当我尝试将其可视化时,我什么也看不到。这意味着代码流进入if,然后发生了一些事情,图片不再可视化。问题在于旋转图片的if语句

因此,旋转图片的过程中肯定有问题,但我不知道到底是什么问题,我从上传到的位置创建图像,使用PHP函数旋转图像,然后在相同的确切位置重新创建图像

你们谁能看出我哪里弄错了

谢谢


Masiar

很遗憾,你看不到错误消息。我建议写一个小的测试页面,可以“伪造”iPhone端的东西,并允许你在不使用手机的情况下通过提交图像进行测试。或者简单地编写一个简短的脚本,打开一个图像,
imagerotate()
it并保存它,然后使用它进行测试

此外,正如gnud指出的,PHP错误甚至可能已经被写入服务器日志文件。(通常,它们会出现在类似
/var/log/apache/…
的地方,但我想,对于超级用户来说,找出它们在您的盒子上的位置更像是一个问题……)

话虽如此,考虑到您所说的,我怀疑您正在使用的Linux发行版的PHP包不支持GD库的(经过大量编辑的)PHP“打包”版本。有关详细信息,请参阅Ubuntu

这意味着您正在使用的
imagerotate()
函数根本不存在。如果启用错误报告并使用测试脚本,则可以轻松验证这一点

作为一种解决方法,您可以选择查找GD库的一个版本,您可以将其安装在您的设备上以替换标准的GD库,也可以选择

或者,正如Eamorr所建议的,您可以使用命令行工具,如ImageMagick(或者通过使用ImageMagick,但对于一个旋转来说,这可能是多余的)

另一方面,我认为iPhone通过在图像元数据中设置一个标志来专门“旋转”它拍摄的照片(例如横向),而不是实际旋转图像数据,因此如果你旋转iPhone上拍摄的图像,请确保使用纵向和横向拍摄的图像进行测试,并检查您的图像旋转在每种情况下都是正确的


如果我没记错的话,照片数据始终是纵向的,如果照片是在手机保持横向的情况下拍摄的,那么在EXIF方向数据中只设置了“景观”。如果手机上下颠倒,也会有不同的值。

很遗憾,你看不到错误消息。我建议写一个小的测试页面,可以“伪造”iPhone端的东西,并允许你在不使用手机的情况下通过提交图像进行测试。或者简单地编写一个简短的脚本,打开一个图像,
imagerotate()
it并保存它,然后使用它进行测试

此外,正如gnud指出的,PHP错误甚至可能已经被写入服务器日志文件。(通常,它们会出现在类似
/var/log/apache/…
的地方,但我想,对于超级用户来说,找出它们在您的盒子上的位置更像是一个问题……)

话虽如此,考虑到您所说的,我怀疑您正在使用的Linux发行版的PHP包不支持GD库的(经过大量编辑的)PHP“打包”版本。有关详细信息,请参阅Ubuntu

这意味着您正在使用的
imagerotate()
函数根本不存在。如果启用错误报告并使用测试脚本,则可以轻松验证这一点

作为一种解决方法,您可以选择查找GD库的一个版本,您可以将其安装在您的设备上以替换标准的GD库,也可以选择

或者,正如Eamorr所建议的,您可以使用命令行工具,如ImageMagick(或者通过使用ImageMagick,但对于一个旋转来说,这可能是多余的)

另一方面,我认为iPhone通过在图像元数据中设置一个标志来专门“旋转”它拍摄的照片(例如横向),而不是实际旋转图像数据,因此如果你旋转iPhone上拍摄的图像,请确保使用纵向和横向拍摄的图像进行测试,并检查您的图像旋转在每种情况下都是正确的

如果我没记错的话,照片数据始终是纵向的,如果照片是在手机保持横向的情况下拍摄的,那么在EXIF方向数据中只设置了“景观”。如果手机上下颠倒,也有不同的值。

要翻转180度:

exec('mogrify-flip/path/to/your/picture')

您需要安装imagemagick

我相信你可以很容易地找到翻转90度的方法。

要翻转180度:

exec('mogrify-flip/path/to/your/picture')

您需要安装imagemagick


我相信你可以很容易地找出如何将它翻转90度。

你得到的['scape']值多少?另外,你为什么不直接测试一下自己的图像是否是纵向的,而不是(显然)依靠用户勾选一个复选框呢