簡體   English   中英

設置imagemagick png圖像背景顏色

[英]Set imagemagick png image background color

我有一個PHP腳本來創建pdf文件的png縮略圖,如下所示;

<?php
$file ="test.pdf";
$im = new imagick(realpath($file).'[0]');
$im->setImageFormat("png");
$im->resizeImage(200,200,1,0);
// start buffering
ob_start();
$thumbnail = $im->getImageBlob();
$contents =  ob_get_contents();
ob_end_clean();    
echo "<img src='data:image/jpg;base64,".base64_encode($thumbnail)."' />";    
?>

返回縮略圖,但背景是透明的。 我想設置白色背景顏色,(將alpha圖層更改為白色)。 我怎樣才能做到這一點??

在此先感謝... :)

blasteralfred

解決方案不是背景顏色,而是alpha通道! 試試這段代碼:

$im->readImage($fileInput);
$im->setImageAlphaChannel(imagick::ALPHACHANNEL_DEACTIVATE);

我正在做類似的事情,雖然我實際上是把圖像寫到磁盤上 - 當我使用你的直接輸出時,它起作用了,我得到了PDF的實際顏色。

通過一些調試,我發現這個問題實際上與之相關

imagick::resizeImage()

功能。 無論出於何種原因,當您設置所有顏色,壓縮等時,resizeImage會添加黑色背景。 我的解決方案是使用GD進行大小調整,這樣我就可以進行完整的動態調整 - 由於你對這種事情不感興趣,我只想使用圖像采樣功能。 你的代碼應該是這樣的:

<?php
$file ="test.pdf";
$im = new imagick(realpath($file).'[0]');
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(80);
$im->setImageFormat("jpeg");
$im->sampleImage(200,200);
// start buffering
ob_start();
$thumbnail = $im->getImageBlob();
$contents =  ob_get_contents();
ob_end_clean();    
echo "<img src='data:image/jpg;base64,".base64_encode($thumbnail)."' />";    
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM