因此,我创建了一个站点,使用php脚本创建缩略图,使用imagick创建缩略图。在我的个人网络主机(主机),这是很好的工作。当我复制我的网站并将其上传到我的客户站点(托管在domain.com上)时,它失败了。问Domain.com出了什么事,他们说:
“我们有ImageMagick二进制文件。但是它不符合PHP,所以IMAGICK就不能工作。因此,您将不能使用IMAGICK作为PHP内置类。您必须使用替代的‘转换’实用程序。”
我以前从未使用过“转换实用程序”,所以我不知道他们在说什么。我该多调查一下吗?或者解雇他们,然后坚持我原来的主机(主机),imagick在PHP中工作吗?我觉得我应该了解这一选择,以便更全面地了解我的知识,但我想知道是否值得我花时间去学习它,或者干脆忘掉它,继续前进。
关于如何向前推进的建议,或关于这一备选方案的资源,将不胜感激。谢谢。
发布于 2016-01-18 09:26:29
他们所谈论的是使用PHP的exec()函数来执行ImageMagick,就像从命令行执行ImageMagick一样。在命令行中有数百个使用ImageMagick的示例,只需搜索ImageMagick和convert,这是您在命令行中使用的主要二进制文件的名称。
语法非常简单:
convert input.png ...<processing> ... output.png所以,你可能会
convert input.jpg -thumbnail x320 -quality 80 result.png如果您想在PHP中这样做,ISP建议您使用:
$cmd = "/usr/local/bin/convert '/path/to/input.jpg' -thumbnail x320 -quality 80 '/path/to/result.png'";
exec($cmd, $output, $retval);我真的不能对相对效率、优点或其他方面发表评论(尽管他们有懒惰或无能的味道),但应该能正常工作。
发布于 2016-01-18 17:42:01
就像我说的,人们首先从一些简单的事情开始。对同一文件夹中的图像进行简单的调整大小的代码;如果有效,请转到下一步。
您需要关闭安全模式,使用phpsusex或任何称为phpsusex的方式,您将需要755的CHMOD,否则图像保存到的文件夹上有777。
尝试:
$cmd = "input.jpg -thumbnail x200 -quality 100 output.jpg";
exec("convert $cmd");您可能必须使用路径进行转换,但如果Imagemagick安装正确,则只需使用to即可。
在某些情况下,Imagick比Imagemagick更快,就像前面所说的,如果您接受用户的输入,请确保您在验证数据方面做得很好。
在另一个主题上,我尝试将命令中的代码保持简单,以便将所有的$thumbsPath.basename($file,".jpg")保存为变量,并在IM代码中使用。尤其是在这种情况下,因为您在代码中使用了两次。
您还可以回显$cmd以确认它实际上包含了什么;有时它并不是您所期望的!
发布于 2016-01-18 16:00:31
好的,我正在尝试实现这个替代方式,但我不确定我是否正确地执行它。目前,这是我的代码,我得到了一个内部500错误。不幸的是,我无法理解如何获得用domain.com生成的错误消息,所以我在这里有点盲目。
使用上面的$cmd = "/usr/local/bin/convert '/path/to/input.jpg' -thumbnail x320 -quality 80 '/path/to/result.png'"; exec($cmd, $output, $retval);
我试图为输入路径和结果路径插入一对变量:
$thumbsPath = "./RecentAdditions_thumbnails/";
if (!file_exists($thumbsPath)) {
mkdir($thumbsPath, 0777, true);
}
foreach($files as $file)
if(!file_exists($thumbsPath.basename($file, ".jpg")."_thumb.jpg")){
$cmd = "/usr/local/bin/convert ''./'"$file"' -thumbnail x200 -quality 100 '"$thumbsPath.basename($file, ".jpg")."_thumb.jpg'";
exec($cmd, $output, $retval);https://stackoverflow.com/questions/34848963
复制相似问题