0

我正在尝试加载 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)."' />"; } ?>
4

2 回答 2

0

您将不得不使用移动到上一个图像$image->previousImage()

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

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

于 2013-05-15T13:02:06.333 回答
0

我猜对了!!

这是从 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,有什么想法吗???

于 2013-05-15T16:16:10.807 回答