我正在使用PHP和GD裁剪并输出带有以下代码的图像.它工作正常,但是当我将透明PNG传递给它时,会生成黑色背景.我该如何阻止呢?
//setup
switch ($source_type) {
case IMAGETYPE_JPEG: $source = imagecreatefromjpeg($img_path); break;
case IMAGETYPE_PNG: $source = imagecreatefrompng($img_path); break;
}
// setup cropped destination
$cropped = imagecreatetruecolor($cropped_width, $cropped_height);
// create cropped image
$x = (($source_width / 100) * IMAGE_X) - ($cropped_width / 2);
$y = (($source_height / 100) * IMAGE_Y) - ($cropped_height / 2);
imagecopy(
$cropped,
$source,
0, 0,
$x, $y,
$cropped_width, $cropped_height
);
// output inc header
header('Content-type: image/jpeg');
imagejpeg($cropped);
解决方法:
应该是以下内容:
switch ($source_type)
{
case IMAGETYPE_PNG:
$background = imagecolorallocate($source, 0, 0, 0);
// remove the black
imagecolortransparent($source, $background);
// turn off alpha blending
imagealphablending($source, false);
imagesavealpha($source, true);
break;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。