【问题标题】:PHP imagick get all images from tiffPHP imagick 从 tiff 获取所有图像
【发布时间】:2013-05-15 12:51:24
【问题描述】:

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

【问题讨论】:

标签: php imagick


【解决方案1】:

您必须使用 $image-&gt;previousImage() 移至上一张图片

向后遍历图像的数量并移动到上一个图像以获取所有图像,也可以使用while ($image-&gt;hasPreviousImage()) {} 构造

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

【讨论】:

    【解决方案2】:

    我猜对了!!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 2013-07-07
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多