我遇到了PHP这个问题 我试图用图片制作拇指..它适用于所有类型的图片,除了png(仅给出拇指黑色图片)
这是我制作拇指的代码
function image_resize($src, $dst, $width, $height, $crop = 0)
{
if (!list($w, $h) = getimagesize($src))
{
$this->return_error("صيغة الملف المرفوعة غير مدعومة !");
return (false);
}
$type = strtolower(substr(strrchr($src, "."), 1));
if ($type == 'jpeg')
$type = 'jpg';
switch ($type)
{
case 'bmp':
$img = imagecreatefromwbmp($src);
break;
case 'gif':
$img = imagecreatefromgif($src);
break;
case 'jpg':
$img = imagecreatefromjpeg($src);
break;
case 'png':
$img = imagecreatefrompng($src);
break;
default:
$this->return_error("عفواً ولكن حدث خطأ أثناء معالجة الصورة المرفوعة");
return (false);
}
// resize
if ($crop)
{
if ($w < $width or $h < $height)
{
$this->return_error("مقاس الصورة المرفوعة صغير للغاية");
return (false);
}
$ratio = max($width / $w, $height / $h);
$h = $height / $ratio;
$x = ($w - $width / $ratio) / 2;
$w = $width / $ratio;
} else
{
if ($w < $width and $h < $height)
{
$this->return_error("مقاس الصورة المرفوعة صغير للغاية");
return (false);
}
$ratio = min($width / $w, $height / $h);
$width = $w * $ratio;
$height = $h * $ratio;
$x = 0;
}
$new = imagecreatetruecolor($width, $height);
// preserve transparency
if ($type == "gif" or $type == "png")
{
imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0,
127));
imagealphablending($new, false);
imagesavealpha($new, true);
}
imagecopyresampled($new, $img, 0, 0, $x, 0, $width, $height, $w, $h);
switch ($type)
{
case 'bmp':
imagewbmp($new, $dst);
break;
case 'gif':
imagegif($new, $dst);
break;
case 'jpg':
imagejpeg($new, $dst);
break;
case 'png':
imagepng($new, $dst);
break;
}
return true;
}
除PNG外,所有其他类型的图片都正常工作