Tôi đang cố gắng giảm kích thước một số hình ảnh trong suốt bằng PHP với GD, và bất cứ khi nào tôi làm, có một đường viền đen-đen kỳ lạ được thêm xung quanh nó.Thay đổi kích thước hình ảnh trong PHP GD cho viền đen
Trước
Sau
Mã
<?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);
?>
Dường như nếu tôi thay đổi mã cho kích thước mới để được giống như các cũ (loại bỏ các - 1
), không có viền đen xuất hiện. Vì vậy, thay đổi kích thước đang gây ra sự cố.
Có ai có ý tưởng gì có thể sai không?
Chỉnh sửa: Tôi vừa nhận ra điều này chỉ xảy ra với imagecopyresampled
chứ không phải imagecopyresized
. Tuy nhiên, imagecopyresampled
mang lại hiệu ứng hình ảnh tốt hơn nhiều và tôi muốn làm cho nó hoạt động nếu có thể.
Có vẻ như chống răng cưa đang sử dụng màu đen cho màu mờ. – Brad
@Brad thực sự là vậy. Tuy nhiên, trang tài liệu nói rằng chống răng cưa bị tắt theo mặc định và nó chỉ đi kèm với phiên bản gói GD mà tôi không sử dụng. Có lẽ một số chức năng khác là gây ra nó nhưng tôi không thấy bất kỳ thông số khác như xa như tôi có thể nói ... –
Tôi chỉ nhận ra nó chỉ xảy ra với ['imagecopyresampled'] (http://php.net/manual/en /function.imagecopyresampled.php) và không phải là ['imagecopyresized'] (http://php.net/manual/en/function.imagecopyresized.php). Tuy nhiên, 'imagecopyresampled' cho hiệu ứng hình ảnh tốt hơn nhiều và tôi muốn nó hoạt động nếu có thể. –