回覆 Francois
<?php
$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
?>
Imagick::ALPHACHANNEL_REMOVE 已在 3.2.0b2 (在 RC 之前) 中新增:http://pecl.php.net/package-info.php?package=imagick&version=3.2.0b2
問題在於想要實作此功能,但卻卡在 Imagick 版本 < 3.2.0b2 的人。他們無法使用此常數。然而,一切並非絕望。我找到一個參考資料,有人使用整數成功執行此操作:http://stackoverflow.com/q/28154179/1000608
他使用的數字是 11,這似乎表明 Imagick::ALPHACHANNEL_REMOVE 的值是 11,並且即使在實作常數之前,該函式在此用例中也能正確運作。因此,如果您卡在 <3.2.0b2,這是您需要的程式碼
<?php
$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(11);
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
?>
這至少可以追溯到版本 3.1.0~rc1-1 (Debian 7 中 php5-imagick 套件的目前版本)。