每当我使用PHP GD的imagecrop()函数处理带透明度的PNG图片时,它会把透明部分变成黑色而不是保持原样。
最近我写了一个函数来缩放带透明度的PNG图片并保持其透明度(见下文),因此我知道如何使用imagecopyresampled等功能。请注意保留HTML标签。
最近我写了一个函数来缩放带透明度的PNG图片并保持其透明度(见下文),因此我知道如何使用imagecopyresampled等功能。请注意保留HTML标签。
function scale_png($image, $resize_w = FALSE, $resize_h = FALSE, $alpha = 127)
{
$src_w = imagesx($image);
$src_h = imagesy($image);
if (! $resize_w) {$resize_w = $src_w;}
if (! $resize_h) {$resize_h = $src_h;}
$output = imagecreatetruecolor($resize_w, $resize_h);
imagealphablending($output, FALSE);
imagesavealpha($output, TRUE);
$transparent = imagecolorallocatealpha($output, 255, 255, 255, $alpha);
imagefilledrectangle($output, 0, 0, $resize_w, $resize_h, $transparent);
imagecopyresampled($output, $image, 0, 0, 0, 0, $resize_w, $resize_h, $src_w, $src_h);
return $output;
}
上述函数运行良好,但当我尝试在同一PNG图像上执行imagecrop()时,就会出现黑色背景。
有没有简单的方法可以成功地进行裁剪?我似乎找不到任何好的例子。
如果可能的话,我宁愿不编写另一个复杂的函数来使用x、y、w、h和imagecopyresampled()裁剪图像,因为那太麻烦了。
有没有GD高手能够传授他们宝贵的知识给我呢?