php简易缩略图处理代码

此代码是网上搜到的,可以快速的做出缩略图

stand_test.php
<?php
// http://localhost/exa5/thumb_image/thumb_stand.php?w=200&h=200
// 把大图缩略到缩略图指定的范围内,可能有留白(原图细节不丢失)
$w = $_GET['w']?$_GET['w']:200;
$h = $_GET['h']?$_GET['h']:200;
$filename = "stand_test_".$w."_".$h.".jpg";//输出到的位置
$loc_img='test.jpg';//本地图片
image_resize( $loc_img,$filename, $w, $h);
header("content-type:image/png");//设定生成图片格式
echo file_get_contents($filename);

function image_resize($f, $t, $tw, $th){
// 按指定大小生成缩略图,而且不变形,缩略图函数
    $temp = array(1=>'gif', 2=>'jpeg', 3=>'png');

    list($fw, $fh, $tmp) = getimagesize($f);

    if(!$temp[$tmp]){
        return false;
    }
    $tmp = $temp[$tmp];
    $infunc = "imagecreatefrom$tmp";
    $outfunc = "image$tmp";

    $fimg = $infunc($f);

    // 使缩略后的图片不变形,并且限制在 缩略图宽高范围内
    if($fw/$tw > $fh/$th){
        $th = $tw*($fh/$fw);
    }else{
        $tw = $th*($fw/$fh);
    }

    $timg = imagecreatetruecolor($tw, $th);
    imagecopyresampled($timg, $fimg, 0,0, 0,0, $tw,$th, $fw,$fh);
    if($outfunc($timg, $t)){
        return true;
    }else{
        return false;
    }
}
?>

 thumb_cut.php

   
<?php
// http://localhost/exa5/thumb_image/thumb_cut.php?w=200&h=200
// 把大图缩略到缩略图指定的范围内,不留白(原图会居中缩放,把超出的部分裁剪掉)
$w = $_GET['w']?$_GET['w']:200;
$h = $_GET['h']?$_GET['h']:200;
$filename = "cut_test_".$w."_".$h.".jpg";//输出到的位置
$loc_img='test.jpg';//本地图片
image_resize($loc_img ,$filename, $w, $h);
header("content-type:image/png");//设定生成图片格式
echo file_get_contents($filename);

// 按指定大小生成缩略图,而且不变形,缩略图函数
function imageResize($f, $t, $tw, $th){
    $temp = array(1=>'gif', 2=>'jpeg', 3=>'png');
    list($fw, $fh, $tmp) = getimagesize($f);
    if(!$temp[$tmp]){
        return false;
    }
    $tmp = $temp[$tmp];
    $infunc = "imagecreatefrom$tmp";
    $outfunc = "image$tmp";

    $fimg = $infunc($f);
//      $fw = 10;
//      $fh = 4;
//      $tw = 4;
//      $th = 2;
    // 把图片铺满要缩放的区域
    if($fw/$tw > $fh/$th){
        $zh = $th;
        $zw = $zh*($fw/$fh);
        $_zw = ($zw-$tw)/2;
    }else{
        $zw = $tw;
        $zh = $zw*($fh/$fw);
        $_zh = ($zh-$th)/2;
    }
//        echo $zw."<br>";
//        echo $zh."<br>";
//        echo $_zw."<br>";
//        echo $_zh."<br>";
//        exit;
    $zimg = imagecreatetruecolor($zw, $zh);
    // 先把图像放满区域
    imagecopyresampled($zimg, $fimg, 0,0, 0,0, $zw,$zh, $fw,$fh);

    // 再截取到指定的宽高度
    $timg = imagecreatetruecolor($tw, $th);
    imagecopyresampled($timg, $zimg, 0,0, 0+$_zw,0+$_zh, $tw,$th, $zw-$_zw*2,$zh-$_zh*2);
//
    if($outfunc($timg, $t)){
        return true;
    }else{
        return false;
    }
}

?>
   thumb_strict.php

 
<?php
// http://localhost/exa5/thumb_image/thumb_strict.php?w=200&h=200
// 把大图缩略到缩略图指定的范围内,不留白(原图会剪切掉不符合比例的右边和下边)
$w = $_GET['w']?$_GET['w']:200;
$h = $_GET['h']?$_GET['h']:200;
$filename = "strict_test_".$w."_".$h.".jpg";//输出到的位置
$loc_img='test.jpg';//本地图片
image_resize( $loc_img,$filename, $w, $h);
header("content-type:image/png");//设定生成图片格式
echo file_get_contents($filename);

function image_resize($f, $t, $tw, $th){
// 按指定大小生成缩略图,而且不变形,缩略图函数
    $temp = array(1=>'gif', 2=>'jpeg', 3=>'png');

    list($fw, $fh, $tmp) = getimagesize($f);

    if(!$temp[$tmp]){
        return false;
    }
    $tmp = $temp[$tmp];
    $infunc = "imagecreatefrom$tmp";
    $outfunc = "image$tmp";

    $fimg = $infunc($f);

    if($fw/$tw > $fh/$th){
        $fw = $tw * ($fh/$th);
    }else{
        $fh = $th * ($fw/$tw);
    }

    $timg = imagecreatetruecolor($tw, $th);
    imagecopyresampled($timg, $fimg, 0,0, 0,0, $tw,$th, $fw,$fh);
    if($outfunc($timg, $t)){
        return true;
    }else{
        return false;
    }
}
?>




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值