在PHP中调整和保存jpg、png和gif
我在这里找到了Ian Atkin的解决方案--我正在尝试修改它以适应png和gif,并保存调整大小的图像。Jpg可以工作,但我得到了png和gif的黑色图像(大小正确)。我不知道我做错了什么。代码如下:在PHP中调整和保存jpg、png和gif,php,png,jpeg,gif,image-resizing,Php,Png,Jpeg,Gif,Image Resizing,我在这里找到了Ian Atkin的解决方案--我正在尝试修改它以适应png和gif,并保存调整大小的图像。Jpg可以工作,但我得到了png和gif的黑色图像(大小正确)。我不知道我做错了什么。代码如下: function resize_image($file, $w, $h, $crop=FALSE) { list($width, $height) = getimagesize($file); $r = $width / $height; if ($crop) { if ($width
function resize_image($file, $w, $h, $crop=FALSE) {
list($width, $height) = getimagesize($file);
$r = $width / $height;
if ($crop) {
if ($width > $height) {
$width = ceil($width-($width*abs($r-$w/$h)));
} else {
$height = ceil($height-($height*abs($r-$w/$h)));
}
$newwidth = $w;
$newheight = $h;
} else {
if ($w/$h > $r) {
$newwidth = $h*$r;
$newheight = $h;
} else {
$newheight = $w/$r;
$newwidth = $w;
}
}
if($extension=="gif") {
$src = imagecreatefromgif($file);
} elseif($extension=="png") {
$src = imagecreatefrompng($file);
} else {
$src = imagecreatefromjpeg($file);
}
$dst = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if($extension=="gif") {
imagegif($dst, $file);
} elseif($extension=="png") {
imagepng($dst, $file);
} else {
imagejpeg($dst, $file);
}
return $dst;
}
多谢各位 在编写代码时,应该使用一些合理的格式。正确缩进,避免在单行上有多个命令。它目前看起来很凌乱,很难阅读。抱歉,编辑了它。
if($extension==“gif”)
-变量$extension
从未定义过,因此这应该会抛出一个“undefined variable”警告,然后总是转到if语句的else
部分(使用jpeg)哦,对不起,$extension是较早设置的,除了这个功能,我应该提到它,对不起。我确实能识别png和gif文件,并将其保存为png/gif,其尺寸/比例正确。但是它们是黑色的。即使它设置在函数外部,它在函数内部仍然是未定义的。