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


identify -verbose returns Imagemagick version instead of image properites

我在使用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");

但是我得到的是:

字符串(79)"版本:ImageMagick 6.8.9-9 Q16 x86_64 2016-06-01www.imagemagick.org"

不管图像是什么,我都会得到这个。如果它找不到任何东西,文档中没有关于默认版本的任何内容,日志中也没有错误,所以我有点卡住了。任何帮助将是伟大的,谢谢!

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

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

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

编辑我发现这个工作:

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

我建议您尝试向捕获输出的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"