更新:我通过在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
。
答案 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
也确实已经查询了正确的内容......