我想縮小PHP中的一些透明圖像與GD,每當我這樣做,有一個奇怪的黑色邊框被添加在它周圍。PHP GD調整透明圖像給黑色邊框
以前
代碼後
<?php
$image = imagecreatefromstring(file_get_contents('logo.png'));
$width = imagesx($image);
$height = imagesy($image);
$newWidth = $width - 1;
$newHeight = $height - 1;
$output = imagecreatetruecolor($newWidth, $newHeight);
imagecolortransparent($output, imagecolorallocatealpha($output, 0, 0, 0, 127));
imagealphablending($output, false);
imagesavealpha($output, true);
imagecopyresampled($output, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
header('Content-Type: image/png');
imagepng($output);
?>
看來,如果我改變了代號爲新的尺寸是一樣的舊(刪除- 1
),不會出現黑色邊框。所以調整大小會導致問題。
有沒有人有一個想法可能是什麼錯?
編輯:我剛剛意識到它只發生在imagecopyresampled
而不是imagecopyresized
。然而,imagecopyresampled
提供了更好的視覺效果,如果可能的話,我想使它工作。
看起來像抗鋸齒是使用黑色爲啞光的顏色。 – Brad
@Brad的確如此。但是,文檔頁面指出,反鋸齒默認情況下處於關閉狀態,並且它只與GD的捆綁版本一起使用,我不使用該版本。也許一些其他功能正在造成它,但我沒有看到任何其他參數,據我所知... –
我只是意識到它只發生在['imagecopyresampled'](http://php.net/manual/en /function.imagecopyresampled.php)而不是['imagecopyresized'](http://php.net/manual/en/function.imagecopyresized.php)。不過,'imagecopyresampled'可以提供更好的視覺效果,如果可能的話,我希望能夠使其工作。 –