1. 程式人生 > >php簡易縮圖處理程式碼

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;
}
}
?>