Я пытаюсь уменьшить размер некоторых прозрачных изображений в 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
дает гораздо лучший визуальный эффект, и я хотел бы заставить его работать, если это возможно.
imagecopyresampled
, а неimagecopyresized
. Однакоimagecopyresampled
дает гораздо лучший визуальный эффект, и я бы хотел, чтобы он работал, если это возможно. - person Alex Turpin   schedule 15.11.2011