我正在尝试加载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)."' />"; } ?>
答案 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编码,任何想法???