【问题标题】:PHP GD Transparent PNG black bars issuePHP GD透明PNG黑条问题
【发布时间】:2017-11-13 04:19:01
【问题描述】:

我正在编写一个 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;
} ?>

这个问题有什么解决方案或变通方法吗?

【问题讨论】:

  • 请不要将图片作为链接发布。请编辑您的帖子。

标签: php image png transparency gd


【解决方案1】:

嗯,我很惊讶在将近 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

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 2013-03-17
    • 2011-08-20
    • 2011-08-31
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多