在PHP中旋转图片一次';他得救了
我有一个PHP脚本,可以在我的网站上保存图片。我想,一旦图片被保存,旋转90度的图片,如果它不是横向的。这是我的一段脚本:在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']
$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']值多少?另外,你为什么不直接测试一下自己的图像是否是纵向的,而不是(显然)依靠用户勾选一个复选框呢