2011-12-13 4 views
1

更新:コマンドで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ファイルかどうかを確認しようとしている

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

イム単一のレイヤーまたは複数のレイヤーが含まれているので、私のデータベースに真偽値を設定することができます。問題は私が何をしてもイメージが常に1つのレイヤーを持っていると言います。私が読んでいるほど、実際にはGIFファイルのレイヤー数を数えているようです。すべてのヘルプは、私のすべての変数が$layersを除き正常に動作し

$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]; 

をいただければ幸いです。私のファイルにいくつのレイヤーがあっても、 1を返します。

+0

GIFファイルは、レイヤーを持っていない...正しいことを照会ありません。アニメーションGIFには複数のフレームがあるかもしれませんが、それらは「レイヤー」ではありません。 –

+0

ええ。私はあなたが正しいと信じています。私はGIFではなく、TIFファイルのレイヤカウントをしたいと思います。 –

答えて

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 execであなたのフォーマット文字列の%[scenes]もすでに

関連する問題