我使用以下代碼將 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);
uj5u.com熱心網友回復:
這看起來像一個迭代器問題。您可以嘗試使用這樣的回圈:
<?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 類實作了迭代器:
foreach($img as $i)
{
$img->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/414199.html
標籤:
上一篇:從父關系派生的鍵值對物件訪問專案
