第一种根据情况切割高图切下面 宽图切右面,先按照图片的实际长宽等比例压缩
我这里是直接调用输出 也可以另保存
show.php
<img src="chul.php">
chul.php
$im = "test.jpg";
$extension = explode('.', $im);
$extensions = end($extension);
switch($extensions) {
case "jpg" :
$content_type = "image/jpeg";
$create_type = "imagecreatefromjpeg";
$genera_type = "imagejpeg";
break;
case "gif" :
$content_type = "image/gif";
$create_type = "ImageCreateFromGIF";
$genera_type = "ImageGIF";
break;
case "png" :
$content_type = "image/png";
$create_type = "ImageCreateFromPNG";
$genera_type = "ImagePNG";
break;
}
header("Content-Type: ".$content_type."");
$img=$create_type($im);
$srcW=imagesx($img);//获取图片的宽度
$srcH=imagesy($img);//获取图片的高度
$toW=260;//缩略图的宽度
$toH=300;//缩略图的高度
$toWH=$toW/$toH;
$srcWH=$srcW/$srcH;
if($toWH<=$srcWH) {
$ctoH=$toH;
$ctoW=$ctoH*($srcW/$srcH);
} else {
$ctoW=$toW;
$ctoH=$ctoW*($srcH/$srcW);
}
$newImg=imagecreatetruecolor($ctoW,$ctoH);
//创建新的图像对象(缩略图)
imageCopyreSampled($newImg,$img,0,0,0,0,$ctoW,$ctoH,$srcW,$srcH);
$newImgs=imagecreatetruecolor($toW,$toH);
$ctoWH=$ctoW/$ctoH;
if($toWH<=$ctoWH) {
$ctoW=$toW;
} else {
$ctoH=$toH;
}
imageCopyreSampled($newImgs,$newImg,0,0,0,0,$toW,$toH,$ctoW,$ctoH);
echo $genera_type($newImgs,'',90);//生成图片test.jpg
//echo "<img src='test.jpg'>";
imagedestroy ($newImg);
imagedestroy ($newImgs);
还有一种是先按照宽度等比例压缩,这样就会出现比预计高点或者低点的图片 高了从下面截取 低的不处理
$img=$create_type($im);
$srcW=imagesx($img);//获取图片的宽度
$srcH=imagesy($img);//获取图片的高度
$toW=260;//缩略图的宽度
$toH=300;//缩略图的高度
if($toW <= $srcW) {
$ctoW=$toW;
$ctoH=$ctoW*($srcH/$srcW);
} else {
$ctoW=$toW;
$ctoH=$ctoW*($srcH/$srcW);
}
$newImg=imagecreatetruecolor($ctoW,$ctoH);
//创建新的图像对象(缩略图)
imageCopyreSampled($newImg,$img,0,0,0,0,$ctoW,$ctoH,$srcW,$srcH);
if($toH<=$ctoH) {
$ctoH=$toH;
$ctoW=$toW;
} else {
$ctoW=$toW;
$toH=$ctoH;
}
$newImgs=imagecreatetruecolor($toW, $toH);
imageCopyreSampled($newImgs,$newImg,0,0,0,0,$toW,$toH,$ctoW,$ctoH);
echo $genera_type($newImgs,'',90);//生成图片test.jpg
imagedestroy ($newImg);
imagedestroy ($newImgs);