识别-verbose返回Imagemagick版本而不是图像属性

时间:2016-07-01 16:42:09

标签: php imagemagick

我对Imagemagick有这个奇怪的问题。

按照imagemagick.org的示例使用说明进行操作:

$identify = exec("identify $original_file");

此命令提供类似于以下内容的输出:

  

rose.jpg JPEG 70x46 70x46 + 0 + 0 8位sRGB 2.36KB 0.000u 0:00.000

它确实很好。

下一个命令应该给出一个很长的所有不同属性列表:

$identify = exec("identify -verbose $original_file");

但是这就是我得到的:

  

string(79)“Version:ImageMagick 6.8.9-9 Q16 x86_64 2016-06-01   www.imagemagick.org“

无论图像如何,我都会得到这个。如果文档中找不到任何内容,那么文档中没有任何内容可以默认为版本,并且日志中没有错误,所以我有点卡住了。任何帮助都会非常感谢!

2 个答案:

答案 0 :(得分:0)

如果您查看此页面上的示例http://www.imagemagick.org/script/identify.php,则该版本是该命令的最后一行输出。我假设在使用变量时它会以某种方式覆盖其他信息。

echo "<pre>";
system("identify -verbose $original_file");
echo "</pre>";

这应该将信息输出到屏幕;它显示了什么?

EDIT 我发现这有效:

$original_file = "input.jpg";
$identify = exec("identify -verbose $original_file", $path);
print_r($path);

答案 1 :(得分:0)

我是否可以建议您尝试向捕获输出的exec()添加额外参数,如下所示:

<?php
   $identify = exec("identify -verbose copyright.jpg",$output);
   var_dump($output);
?>

示例输出

array(88) {
  [0]=>
  string(20) "Image: copyright.jpg"
  [1]=>
  string(61) "  Format: JPEG (Joint Photographic Experts Group JFIF format)"
  [2]=>
  string(23) "  Mime type: image/jpeg"
  [3]=>
  string(20) "  Class: DirectClass"
  [4]=>
  string(21) "  Geometry: 10x12+0+0"
  [5]=>
  string(18) "  Units: Undefined"
  [6]=>
  string(15) "  Type: Palette"
  [7]=>
  string(22) "  Endianess: Undefined"
  [8]=>
  string(18) "  Colorspace: sRGB"
  [9]=>
  string(14) "  Depth: 8-bit"
  [10]=>
  string(16) "  Channel depth:"
  [11]=>
  string(14) "    red: 8-bit"
  [12]=>
  string(16) "    green: 1-bit"
  [13]=>
  string(15) "    blue: 1-bit"