图像magick TIFF图层计数始终返回1

时间:2011-12-13 17:26:56

标签: php imagemagick

更新:我通过在cat中运行exec命令并将图像作为文本阅读并搜索单词layer来解决问题。它适用于我测试过的所有图像。如果将图层重命名为Layer 1以外的其他内容,它甚至可以工作。

exec("cat $filename | fgrep -a 'layer'", $ret);
if(!strpos(implode($ret),'layer')){
    $layers='false';
}else{
    $layers='true';
}

请投票结束,或在这种情况下发生的任何事情。

/////////////////////////////////

我试图找出tiff文件是否包含单个图层或多个图层,因此我可以在我的数据库中设置true / false值。问题是无论我做什么,总是说图像有一层。我读的越多,似乎我所做的实际上是要计算GIF文件中的层数。任何帮助将不胜感激

$all=exec("/opt/local/bin/identify -format %w-%h-%x-%z-'%[colorspace]'-'%[channels]'-'%[scenes]' $newfile");
$ex=explode("-",$all);
$width=$ex[0];
$height=$ex[1];
$dpi=$ex[2];
$dpi=explode(" ", $dpi);
$dpi=$dpi[0];
$depth=$ex[3];
$colorspace=$ex[4];
$channels=$ex[5];
$layers=$ex[6];

$layers外,我的所有变量都能正常工作。无论我的文件有多少层,它都会返回1

1 个答案:

答案 0 :(得分:1)

TIFF文件没有多个“图层”。但它们可以包含多个页面(我认为这就是你的意思)。

您可以使用

 identify  multipage.tiff

您应该看到每个单个TIFF页面图像的单独行:

multipage.tif[0] TIFF 1728x2292 1728x2292+0+0 1-bit Bilevel DirectClass 220KB 0.010u 0:00.000
multipage.tif[1] TIFF 1728x2292 1728x2292+0+0 1-bit Bilevel DirectClass 220KB 0.000u 0:00.000
multipage.tif[2] TIFF 1728x2292 1728x2292+0+0 1-bit Bilevel DirectClass 220KB 0.000u 0:00.000
multipage.tif[3] TIFF 1728x2292 1728x2292+0+0 1-bit Bilevel DirectClass 220KB 0.000u 0:00.000

请注意,计数从零开始,以[0]开头。

PHP %[scenes]中格式字符串的exec也确实已经查询了正确的内容......