如果您想取得動畫 (GIF) 影格的數量,您需要使用 Imagick::getNumberImages()
(PECL imagick 2, PECL imagick 3)
Imagick::getImageIterations — 取得影像的迭代次數
此函式沒有參數。
以整數形式傳回影像的迭代次數。
發生錯誤時拋出 ImagickException。
透過使用 PHP 函式 getImageIterations,您將會收到一個值,表示影像的動畫性質。對於非動畫的靜態影像 (如 .BMP 或 .JPEG 檔案),您將會收到「0」,而對於動畫影像 (如動畫 .GIF 檔案),您將會收到「1」。
在大量使用後,我一直無法從此函式取得任何其他結果。ImageMagick 使用者群組中有一些討論說,迭代次數應該表示動畫 .Gif 檔案重複自身的次數。不過,有可能是現代瀏覽器將值預設為無限大,或者此 ImageMagick 功能僅在 Linux 命令列中可用。在此討論群組中查看更多資訊:http://studio.imagemagick.org/pipermail/magick-users/2002-October/005814.html
以下是一些範例程式碼
<?php
// Author: holdoffhunger@gmail.com
// Imagick Type
// ---------------------------------------------
$imagick_type = new Imagick();
// Open File
// ---------------------------------------------
$file_to_grab = "image_workshop_directory/test.gif";
$file_handle_for_viewing_image_file = fopen($file_to_grab, 'a+');
// Grab File
// ---------------------------------------------
$imagick_type->readImageFile($file_handle_for_viewing_image_file);
// Get Image Iterations
// (Detect Animated Image Versus Non-Animated Image)
// ---------------------------------------------
$image_iterations = $imagick_type->getImageIterations();
// Print Iteration Value Interpreted
// ---------------------------------------------
if($image_iterations == 1)
{
print("$file_to_grab *IS* an animated image.");
}
else
{
print("$file_to_grab *IS NOT* an animated image.");
}
?>