PHP imagick从tiff获取所有图像

时间:2013-05-15 12:51:25

标签: php imagick

我正在尝试加载tiff文件并计算数字或图像,然后将每个图像显示为PNG缩略图。

计数部分是好的它计数6这是该tif中正确的页数,然后代码列出了同一图像的6个,这是tiff的第一页。如果我的循环出现问题或者我没有正确使用imagick函数,则无法锻炼。

任何人都可以提供帮助

<?php

$image2 = new Imagick('http://mysite.org.uk/tiftest/2.tif'); 


/* Create the object */
$image = new Imagick('http://mysite.org.uk/tiftest/2.tif');
$count = $image->getNumberImages();

echo "<h3 style=\"font: bold 12pt Arial\">Total Number of Images Extracted ".
 "from the TIF : ".$image->getNumberImages()."</h3>";

for ($x = 1;$x <= $image->getNumberImages();$x++) {
    $image->pingImage( $image2 );    
    $image->readImageFile( $image2 );    
    $image->setImageFormat( 'png' );
    $image->thumbnailImage(100, 0);
echo "<img id='" . $x . "' src='data:image/png;base64,".base64_encode($image)."' />"; } ?>

2 个答案:

答案 0 :(得分:0)

您必须使用$image->previousImage()

移至上一张图片

向后迭代图像数量并移动到上一个图像以获取所有图像,也可以使用while ($image->hasPreviousImage()) {}构造

哦,不要使用readImageFile,你已经将图像保存在内存中。

答案 1 :(得分:0)

我怀疑了!!

以下是将所有sepearte页面从tif中删除并将其显示为PNG的代码:

<?php
/* Create the object */
$image = new Imagick('http://mysite.o.uk/tiftest/1.tif');
$count = $image->getNumberImages();

echo "<h3 style=\"font: bold 12pt Arial\">Total Number of Images Extracted ".
  "from the TIF : ".$image->getNumberImages()."</h3>";
 $x =0;

foreach ( $image as $image ) {  
    $x++;
    $image->setImageFormat( 'png' );
    $image->thumbnailImage(150, 120);

    echo "<img id='" . $x . "' src='data:image/png;base64,".base64_encode($image)."' />";


 }
?>

但是现在我需要知道如何将它们显示为真正的PNG而不使用base63编码,任何想法???