库imagemagick deos不能在路径上使用图像

时间:2017-01-24 10:12:04

标签: php imagemagick

我已安装了imagemagick,我正在使用示例代码测试此库。

如果图像与php脚本位于同一目录中,则可以正常工作。但如果我把它放在一个文件夹中,它就不会:

$imagick = new Imagick('./img/image.jpg');

我的脚本返回错误代码500。

例如:

<?php

 $imagePath = "/img/image.jpg";

function thumbnailImage($imagePath)
{
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->setbackgroundcolor('rgb(64, 64, 64)');
    $imagick->thumbnailImage(100, 100, true, true);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}
thumbnailImage();

1 个答案:

答案 0 :(得分:1)

当您使用相对路径时,您正在使用绝对路径。

当你说:

$imagePath = "/img/image.jpg"; 

您说该图片位于文件系统根目录的img文件夹中。

假设img文件夹与您的代码位于同一个文件夹中,例如:

-- code_folder/
  -- script.php
  -- img/
    -- image.jpg

您需要提供相对路径。

您可以使用__DIR__预定义常量,该常量始终指向脚本所在的文件夹,并连接文件夹/图像路径。

E.g:

$imagePath = __DIR__ . "/img/image.jpg";

此外,您使用一个参数定义thumbnailImage();,正在设置$imagePath,但不传递该参数。不好。

所以你应该这样做:

thumbnailImage($imagePath);

这应该有效。

下次,尝试查看您的php错误日志,以查找有关正在发生的事情的更多信息。 500错误太笼统,根本无法排除故障。