Saya mencoba memperkecil beberapa gambar transparan di PHP dengan GD, dan setiap kali saya melakukannya, ada batas hitam aneh yang ditambahkan di sekitarnya.
Sebelum
Setelah
Kode
<?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);
?>
Sepertinya jika saya mengubah kode dimensi baru menjadi sama dengan yang lama (menghapus - 1
), tidak ada batas hitam yang muncul. Jadi pengubahan ukuran menyebabkan masalah.
Adakah yang tahu apa yang mungkin salah?
Sunting: Saya baru menyadari ini hanya terjadi dengan imagecopyresampled
dan bukan imagecopyresized
. Namun, imagecopyresampled
memberikan efek visual yang jauh lebih baik dan saya ingin membuatnya berfungsi jika memungkinkan.
imagecopyresampled
dan bukanimagecopyresized
. Namun,imagecopyresampled
memberikan efek visual yang jauh lebih baik dan saya ingin membuatnya berfungsi jika memungkinkan. - person Alex Turpin   schedule 15.11.2011