Imagick: 无法打开文件

12

当简单地调用 Imagick 类:

$image = new Imagick('/images/magick/atmsk.png');

我收到了以下错误信息:

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open file `/images/magick/atmsk.png' @ png.c/ReadPNGImage/2889' in .../imag.php:4 Stack trace: #0 .../imag.php(4): Imagick->__construct('/images/magick/...') #1 {main} thrown in .../imag.php

我已经根据另一篇帖子中的建议检查了可用内存,一切正常!


1
如果您使用完整的图像文件路径,例如 $_SERVER['DOCUMENT_ROOT'] . '/images/magick/atmsk.png',会发生什么? - gmartellino
然后 $image 显示 Imagick 对象!! 这就是问题所在... 感谢快速的帮助。 - Dzseti
2个回答

29

使用完整路径到图像,例如:

$image = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/images/magick/atmsk.png');

我已尝试了以下方法,但仍然出现错误: $im = new Imagick(); $im->readImage(realpath($path)); - Anriëtte Myburgh
4
这可能对一些人有帮助: $imagemagickisawful = substr($_SERVER['SCRIPT_FILENAME'], 0, strrpos($_SERVER['SCRIPT_FILENAME'], "/"))."/";,然后使用 $imagemagickisawful.$your_path_you_would_use_otherwise。这段代码用于在路径中添加文件名,在文件名之前加上 $imagemagickisawful 的值。 - user151496
太棒了,运行得很好......这是我使用的代码:但不要忘记在代码中提到您的站点名称,如下所示:输入:$im = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/site.com/images/image.jpg');输出:$im->writeImages($_SERVER['DOCUMENT_ROOT'] . '/site.com/images/image.jpg', true);它正常运行 :) - Jodyshop

0
感谢@gmartellino的回答和澄清。由于我还不能添加评论,所以在这里分享一下,以防有人遇到类似的情况。
在我的情况下,我需要访问父文件夹中的其他子文件夹。
服务器路径可能看起来像这样:
$path_file = "../other_folder/".$filename.".".$filetype;

网址是

$path_file = $_SERVER['HTTP_ORIGIN']."/other_folder/".$filename.".".$filetype;

因此,使用的路径为:
$path_file = $_SERVER['DOCUMENT_ROOT']."/other_folder/".$filename.".".$filetype;

使用Imagick类读取文件时,请使用文件的完整系统路径而不是URL。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接