繁体   English   中英

PHP GD透明PNG黑条问题

[英]PHP GD Transparent PNG black bars issue

我正在使用PHP脚本来减少图像文件的大小,并且可以与JPEG图像完美配合。 但是,当上传PNG图像时,结果图像中会出现一些奇怪的黑条。

这是一个例子:

原始图片: http//imgur.com/a/Ueboz

结果图像: http : //imgur.com/a/9ZGfm

这是函数调用:

compress_image($_FILES["pic"]["tmp_name"], $folder_path . "/" . $pic_new_name, 50);

这是功能代码:

//function for compressing and storing image
function compress_image($source_url, $destination_url, $quality) {
    $info = getimagesize($source_url);
    if ($info['mime'] == 'image/jpeg') 
    $image = imagecreatefromjpeg($source_url);
    elseif ($info['mime'] == 'image/gif') 
    $image = imagecreatefromgif($source_url);
    elseif ($info['mime'] == 'image/png') 
    $image = imagecreatefrompng($source_url);


    imagejpeg($image, $destination_url, $quality);

    return;
} ?>

有没有解决此问题的方法或解决方法?

嗯,令我惊讶的是,近5个小时后只有8个人查看了该帖子。 无论如何,我自己解决了问题:D

我希望它将使他人受益。

这是一项完整功能,可以正确压缩和处理PNG图像并将其转换为白色背景的JPEG:

//function for compressing and storing image
function compress_image($source_url, $destination_url, $quality) {
    $info = getimagesize($source_url);

$w = $info[0];
$h = $info[1];

if ($info['mime'] == 'image/jpeg') {
$image = imagecreatefromjpeg($source_url);
imagejpeg($image, $destination_url, $quality);
}



elseif ($info['mime'] == 'image/gif') {
$image = imagecreatefromgif($source_url);
imagejpeg($image, $destination_url, $quality);
}

elseif ($info['mime'] == 'image/png') {
$image = imagecreatefrompng($source_url);

$image_p = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($image_p, 0xFF, 0xFF, 0xFF);
imagealphablending($image_p, false);
ImageSaveAlpha($image_p, true);
ImageFill($image_p, 0, 0, $white);
imagealphablending($image_p, true);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $w, $h, $w, $h);
imagejpeg($image_p, $destination_url, $quality);

}


return;

结果: http : //imgur.com/a/S7htB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM