2011-12-13 96 views
1

更新:我已經通過在exec中運行cat命令並將圖像作爲文本讀取並搜索單詞layer來計算出問題。它適用於我測試過的所有圖像。如果圖層重命名爲Layer 1以外,它甚至可以工作。圖片magick TIFF圖層數總是返回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

GIF文件沒有圖層。動畫gif可能有多個框架,但它們不是「圖層」。 – 2011-12-13 17:38:24

回答

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]開始。

您的格式字符串的%[scenes]在你的PHP exec也確實已經查詢了正確的事情......