ImageMagick无法正常工作,也没有给出错误消息

时间:2010-11-27 21:30:42

标签: perl unix command-line imagemagick

我有一些我为客户编写的Perl代码,部分使用ImageMagick的convert来调整图像大小。

这是通过反引号完成的,以这种方式捕获输出:

$output = `convert foo.jpg foo.gif 2>&1`; # simplified example

最近我的客户托管公司做了他被告知的“DNS更改”,并且从那个日期起*,该命令不起作用,不仅如此,也没有$输出。

假设发生了一些事情,例如他被转移到没有ImageMagick的服务器,或者是一个拙劣的安装或更新库 - 我不应该从中得到回报吗?至少有一个“转换未找到”?我也尝试过使用system(),它也是一样的。图像没有转换,没有任何回复。

不幸的是,命令行访问不可用。

*我想这实际上可能是巧合。

2 个答案:

答案 0 :(得分:1)

您可以使用convert的debug option来了解它正在做什么。

要捕获shell命令的所有输出,请使用Capture::Tiny,如下所示:

use Capture::Tiny 'capture';

my @command = qw( convert foo.jpg foo.gif );

my $return_code;
my ($stdout, $stderr) = capture {
    $return_code = system( @command );
};

$stdout$stderr将包含它在锡上的内容。 $return_code将返回任务本身的返回码,传统上在成功时为0,或者在发生错误时为非零数值。

答案 1 :(得分:0)

他们可能没有安装shell(想想perl / mod_perl正在chroot中运行),这样根本不能执行反引号(因为它们涉及调用sh -c 'convert ...'。总是检查$?和{ {1}}。