2013-05-15 69 views
0

我想加载一个tiff文件并计算一些数字或图像,然后显示每个图像作为PNG缩略图。PHP imagick从tiff获取所有图片

计数部分是好的,它计数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)."' />"; } ?> 
+0

可能想看看这里的例子http://www.php.net/manual/en/imagick.nextimage.php – Orangepill

回答

0

你将不得不在图像的数量向后移动使用$image->previousImage()

迭代前面的图像,并移动到前面的图像让所有的人,也可能能够使用while ($image->hasPreviousImage()) {}构造

哦,不要使用readImageFile,你已经有内存中的图像。

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)."' />"; 


} 
?> 

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