我目前正在使用Imagemagick和我工作的缩略图,但问题是当它是一个多页PDF时,它只缩略显示最后一页。
我希望它只是在第一页上发布。任何人都可以放弃任何光明。
if(in_array($ext,array('pdf'))){
$pdf = './uploads/'.$new_file_name;
$filename=str_replace($ext,'jpg',$new_file_name);
$img = new imagick($pdf);
for ($x = 1;$x <= $img->getNumberImages(); $x++) {
$save_to = './uploads/'.$x.'-'.$filename;
$img->setImageFormat('jpg');
$img->resizeImage(149,211,Imagick::FILTER_LANCZOS,1);
$img->displayImages('img');
$img->writeImage($save_to);
}
答案 0 :(得分:0)
在for
循环中,您需要在每次迭代时设置图像索引。
for ($x = 1;$x <= $img->getNumberImages(); $x++) {
$img->setIteratorIndex($x - 1); // nth - 1 assuming we're starting with `$x = 1'
$save_to = './uploads/'.$x.'-'.$filename;
$img->setImageFormat('jpg');
$img->resizeImage(149,211,Imagick::FILTER_LANCZOS,1);
$img->displayImages('img');
$img->writeImage($save_to);
}
<强>更新强>
while
循环我使用Imagick::hasNextImage和Imagick::nextImage提供了更简单的解决方案。
$img = new imagick($pdf);
while($img->hasNextImage()) {
// ... do work
$img->nextImage();
}