我正在编写一个简单的上传脚本,可以上传一个用户指定的图像从他们的计算机到我的服务器。现在它非常简单,但我想解释一下pngs和jpg/jpegs。JPG保存得很好,但pngs,无论它们是否透明,都可以保存为完全黑色的图像。我不确定为什么会发生这种情况,但我有一种感觉,这与imagecreatetruecolor有关
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
$path = $_FILES['file']['name'];
$uploadedfile = $_FILES['file']['tmp_name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
if ($path == 'png') {
$src = imagecreatefrompng($uploadedfile);
imagealphablending($src, true); // setting alpha blending on
imagesavealpha($src, true); // save alphablending setting (important)
header('Content-Type: image/png');
} else {
$src = imagecreatefromjpeg($uploadedfile);
header('Content-Type: image/jpeg');
}
list($width, $height) = getimagesize($uploadedfile);
$r = $width / $height;
if (800/800 > $r) {
$newwidth = 800*$r;
$newheight = 800;
} else {
$newheight = 800/$r;
$newwidth = 800;
}
$tmp = imagecreatetruecolor($newwidth, $newheight);
$filename = '../items/' . $_FILES['file']['name'];
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if ($path == 'png') {
imagepng($tmp, $filename);
} else {
imagejpeg($tmp, $filename, 80);
}
imagedestroy($tmp);
}发布于 2020-08-06 05:01:32
好了,找到我的问题了,我的条件是询问$path == 'png',其中$path是整个镜像名称。我需要的是$ext == 'png'。感谢@wiseone让我再看一遍。
发布于 2020-08-06 04:50:01
您正在将png图像保存为jpg,请检查您的if($path == 'png')条件
https://stackoverflow.com/questions/63273063
复制相似问题