我有这个不想合作的图片上传脚本。
它坚持将透明的png变为黑色。
$img = getimagesize($imgUrl);
switch(strtolower($img['mime']))
{
case 'image/png':
//$img_r = imagecreatefrompng($imgUrl);
$source_image = imagecreatefrompng($imgUrl);
imagealphablending($source_image, false);
imagesavealpha($source_image, true);
$type = '.png';
break;
case 'image/jpeg':
//$img_r = imagecreatefromjpeg($imgUrl);
$source_image = imagecreatefromjpeg($imgUrl);
error_log("jpg");
$type = '.jpeg';
break;
case 'image/gif':
//$img_r = imagecreatefromgif($imgUrl);
$source_image = imagecreatefromgif($imgUrl);
$type = '.gif';
break;
default: die('image type not supported');
}
// resize the original image to size of editor
$resizedImage = imagecreatetruecolor($imgW, $imgH);
imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH);
$final_image = imagecreatetruecolor($cropW, $cropH);
imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
imagecopyresampled($final_image, $resizedImage, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);
// finally output png image
if($type == '.png' ) {
imagepng($final_image, $output_filename.$type);
} else {
imagejpeg($final_image, $output_filename.$type, $jpeg_quality);
}
$imgur = new Imgur_ctrl($output_filename.$type);
$img_url = $imgur->upload();
我尝试了alphablending并保存,但它仍然变成黑色..不知道如何解决这个问题。
感谢您的帮助
编辑:
我在输出之前尝试了alpha混合,就像你在google搜索中发现的许多其他类似问题一样。
$final_image = imagecreatetruecolor($cropW, $cropH);
imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
imagecopyresampled($final_image, $resizedImage, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);
imagealphablending($final_image, false);
imagesavealpha($final_image, true);
// finally output png image
if($type == '.png' ) {
imagepng($final_image, $output_filename.$type);
} else {
imagejpeg($final_image, $output_filename.$type, $jpeg_quality);
}
它仍然变成黑色。
我不希望保持透明(如果确实如此,它会很棒)但它甚至可以用白色工作。