将PDF转换为没有透明背景的PNG
Convert PDF to PNG without transparent background
我使用以下代码将 PDF 转换为 PNG。如您所见,我使用代码 setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE )
删除了背景透明度。但实际上它只适用于最后一页。你觉得代码有问题吗?你有更好的速度更快的解决方案吗?
$PDF = 'test.pdf';
$img = new imagick();
$img->readImage($PDF.'[0-9]'); //Convert 10 pages
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE );
$pages = count($img);
$img->writeImages('./images/'.'pdf.png', true);
这看起来像是一个迭代器问题。你可以尝试像这样循环:
<?php
$PDF = 'test.pdf';
$img = new Imagick();
$img->readImage($PDF. '[0-9]'); //Convert 10 pages
$lastIndex = $img->getIteratorIndex();
$img->resetIterator();
for($i = $img->getIteratorIndex(); $i <= $lastIndex; $i++) {
$img->setIteratorIndex($i);
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
}
$pages = count($img); // not sure why you need this
$img->writeImages('./images/'.'pdf.png', true);
如果您更喜欢它,您还可以将迭代部分简化为一个简单的循环,因为 Imagick class 实现了 Iterator:
foreach($img as $i)
{
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
}
我使用以下代码将 PDF 转换为 PNG。如您所见,我使用代码 setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE )
删除了背景透明度。但实际上它只适用于最后一页。你觉得代码有问题吗?你有更好的速度更快的解决方案吗?
$PDF = 'test.pdf';
$img = new imagick();
$img->readImage($PDF.'[0-9]'); //Convert 10 pages
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE );
$pages = count($img);
$img->writeImages('./images/'.'pdf.png', true);
这看起来像是一个迭代器问题。你可以尝试像这样循环:
<?php
$PDF = 'test.pdf';
$img = new Imagick();
$img->readImage($PDF. '[0-9]'); //Convert 10 pages
$lastIndex = $img->getIteratorIndex();
$img->resetIterator();
for($i = $img->getIteratorIndex(); $i <= $lastIndex; $i++) {
$img->setIteratorIndex($i);
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
}
$pages = count($img); // not sure why you need this
$img->writeImages('./images/'.'pdf.png', true);
如果您更喜欢它,您还可以将迭代部分简化为一个简单的循环,因为 Imagick class 实现了 Iterator:
foreach($img as $i)
{
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
}