您好,登錄后才能下訂單哦!
php生成縮略圖的案例分析?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
php生成縮略圖的方法:首先創(chuàng)建一個PHP示例文件;然后通過“header("content-type:image/png");”設(shè)定生成圖片格式;最后通過“image_resize”方法按指定大小生成縮略圖即可。
PHP生成圖片縮略圖的三種方法:
1、把大圖縮略到縮略圖指定的范圍內(nèi),可能有留白(原圖細(xì)節(jié)不丟失)
2、把大圖縮略到縮略圖指定的范圍內(nèi),不留白(原圖會居中縮放,把超出的部分裁剪掉)
3、把大圖縮略到縮略圖指定的范圍內(nèi),不留白(原圖會剪切掉不符合比例的右邊和下邊)
下面是代碼:
<?php // +---------------------------------------------------------------------- // | 把大圖縮略到縮略圖指定的范圍內(nèi),可能有留白(原圖細(xì)節(jié)不丟失) // +---------------------------------------------------------------------- $w = $_GET['w']?$_GET['w']:200; $h = $_GET['h']?$_GET['h']:200; $filename = "stand_test_".$w."_".$h.".jpg"; image_resize( 'test.jpg',$filename, $w, $h); header("content-type:image/png");//設(shè)定生成圖片格式 echo file_get_contents($filename); function image_resize($f, $t, $tw, $th){ // 按指定大小生成縮略圖,而且不變形,縮略圖函數(shù) $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); // 使縮略后的圖片不變形,并且限制在 縮略圖寬高范圍內(nèi) 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; } } ?>
<?php // +---------------------------------------------------------------------- // | 把大圖縮略到縮略圖指定的范圍內(nèi),不留白(原圖會居中縮放,把超出的部分裁剪掉) // +---------------------------------------------------------------------- $w = $_GET['w']?$_GET['w']:200; $h = $_GET['h']?$_GET['h']:200; $filename = "cut_test_".$w."_".$h.".jpg"; image_resize( 'test.jpg',$filename, $w, $h); header("content-type:image/png");//設(shè)定生成圖片格式 echo file_get_contents($filename); // 按指定大小生成縮略圖,而且不變形,縮略圖函數(shù) 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); // $fw = 10; // $fh = 4; // $tw = 4; // $th = 2; // 把圖片鋪滿要縮放的區(qū)域 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); // 先把圖像放滿區(qū)域 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; } } ?>
<?php // +---------------------------------------------------------------------- // | 把大圖縮略到縮略圖指定的范圍內(nèi),不留白(原圖會剪切掉不符合比例的右邊和下邊) // +---------------------------------------------------------------------- $w = $_GET['w']?$_GET['w']:200; $h = $_GET['h']?$_GET['h']:200; $filename = "strict_test_".$w."_".$h.".jpg"; image_resize( 'test.jpg',$filename, $w, $h); header("content-type:image/png");//設(shè)定生成圖片格式 echo file_get_contents($filename); function image_resize($f, $t, $tw, $th){ // 按指定大小生成縮略圖,而且不變形,縮略圖函數(shù) $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; } } ?>
感謝各位的閱讀!看完上述內(nèi)容,你們對php生成縮略圖的案例分析大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。