php gd库生成缩略图的方法

第一种根据情况切割高图切下面 宽图切右面,先按照图片的实际长宽等比例压缩

我这里是直接调用输出 也可以另保存

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值