深入探討PHP生成縮略圖的實(shí)現(xiàn)方法
作者:佚名
PHP生成縮略圖的實(shí)現(xiàn)對于剛剛接觸PHP語言,并沒有太多實(shí)際編程經(jīng)驗(yàn)的新手來說是一個(gè)比較難以掌握的知識。下面我們就為大家奉上了這一功能實(shí)現(xiàn)的代碼示例。
我們在運(yùn)用PHP語言進(jìn)行實(shí)際代碼編寫的時(shí)候,遇到一個(gè)新的需求,通常都會(huì)通過自己不斷積累的經(jīng)驗(yàn)來解決這以需求的實(shí)現(xiàn)。下面我們?yōu)榱嗽黾哟蠹业木幋a經(jīng)驗(yàn),特地介紹了一下有關(guān)PHP生成縮略圖的相關(guān)方法。#t#
PHP生成縮略圖HTML代碼
- < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- < HTML>
- < HEAD>
- < TITLE> 上傳圖片 < /TITLE>
- < META NAME="Generator" CONTENT="EditPlus">
- < META NAME="Author" CONTENT="">
- < META NAME="Keywords" CONTENT="">
- < META NAME="Description" CONTENT="">
- < meta http-equiv="Content-Type" content="text/html; charset=gbk" />
- < /HEAD>
- < BODY>
- < FORM METHOD="POST" ACTION="tu.php?act=upload" enctype="multipart/form-data" >
- < p>< INPUT TYPE="file" NAME="file"/>< /p>
- < p>< INPUT TYPE="submit" value="hao"/> < INPUT TYPE="reset"/>< /p>
- < /FORM>
- < /BODY>
- < /HTML>
PHP生成縮略圖PHP代碼
- < ?php
- /*后臺登陸界面
- *黃春龍學(xué)習(xí)編寫
- *首寫時(shí)間:2009-10-27
- *更新時(shí)間:2009/11/24
- */
- require_once '../xmphp/init.php';
- //全站配置文件
- require_once XMPHP_COMMON.'/smarty.php';
- //smarty功能
- require_once XMPHP_COMMON.'/mysql.php';
- //mysql功能
- require_once XMPHP_COMMON.'/func.php';
- //常用函數(shù)
- if(isset($_GET['act'])&&$_GET['act']
=='upload'){- $file=$_FILES['file'];
- $info=pathinfo($file['name']);
- $a=array('jpg','gif','png');
- if(!in_array($info['extension'],$a)){
- alert("請選擇jpg,gif,png格式的圖片
進(jìn)行上傳");- exit;
- }
- if($file['name'] !=''){
- $dirname=date('Ym');
- $dirname='../upload/'.$dirname;
- //原圖路徑
- $xin=$dirname.'/s';//PHP生成縮略圖路徑
- if(!file_exists($xin)){
- @mkdir($xin);
- }
- $image1=$info['filename'].'120_120'.'.'
.$info['extension'];//縮略圖名稱- $image2=$info['filename'].'300_300'.'.'
.$info['extension'];//縮略圖名稱- list($imagw,$imagh)=getimagesize($file
['tmp_name']);//取得原圖的寬高(另外$file
['tmp_name']只是一個(gè)臨時(shí)文件路徑,有時(shí)可能
會(huì)報(bào)錯(cuò),如報(bào)錯(cuò)只需把臨時(shí)文件路徑改成你上傳
后的原圖的路徑即可)- //120圖判斷各種情況來取得縮略圖的寬高
- if($imagw< =120&&$imagh< =120){
- $m120w=$imagw;
- $m120h=$imagh;
- }elseif($imagw>$imagh)
- {
- $m120w=120;
- $m120h=intval($m120w/number_format(
$imagw/$imagh,2));//縮略圖的寬除以(原
圖的寬除以原圖的高)number_format查手冊- }
- else
- {
- $m120h=300;
- $m120w=intval($m120h/number_format(
$imagh/$imagw,2));//縮略圖的高除以(原圖
的高除以原圖的寬)number_format查手冊- }
- //300圖判斷各種情況來取得縮略圖的寬高
- if($imagw< =300&&$imagh< =300){
- $m300w=$imagw;
- $m300h=$imagh;
- }elseif($imagw>$imagh){
- $m300w=300;
- $m300h=intval($m300w/number_format(
$imagw/$imagh,2));//縮略圖的寬除以(原
圖的寬除以原圖的高)number_format查手冊- }else{
- $m300h=300;
- $m300w=intval($m300h/number_format(
$imagh/$imagw,2));//縮略圖的高除以(原
圖的高除以原圖的寬)number_format查手冊- }
- if($info['extension']=='jpg'){
- $info['extension']='jpeg';//判斷圖像類
型如果是JPG的則把它轉(zhuǎn)換成JPEG的因?yàn)閳D像處
理函數(shù)在處理JPG的時(shí)候都是用的JPEG而不是JPG- }
- $iml='imagecreatefrom'.$info['extension'];
- //取得不同圖片格式的不同函數(shù)
- $yuan=$iml($file['tmp_name']);
- //根據(jù)前面取的不同函數(shù)來取的原圖的標(biāo)識
- $mu1=imagecreatetruecolor($m120w,$m120h);
- //取的要生成的縮略圖的標(biāo)識
- $mu2=imagecreatetruecolor($m300w,$m300h);
- //取的要生成的縮略圖的標(biāo)識
- $c='image'.$info['extension'];
- //生成輸出縮略圖的函數(shù),不能分開寫,否則報(bào)錯(cuò)
- imagecopyresampled($mu1,$yuan,0,0,0,
0,$m120w,$m120h,$imagw,$imagh);//生成縮略圖120- $res=$c($mu1,$xin.'/'.$image1);
- //存放縮略圖
- if(!$res){
- alert('生成120縮略圖失敗');
- exit;
- }
- imagecopyresampled($mu2,$yuan,0,0
,0,0,$m300w,$m300h,$imagw,$imagh);- //PHP生成縮略圖生成縮略圖120
- $res=$c($mu2,$xin.'/'.$image2);
- //存放縮略圖
- if($res){
- alert('生成300縮略圖成功');
- exit;
- }
- }
- }
- $tpl->display("tu/tu.html");
- ?>
以上這一大段的代碼示例就是PHP生成縮略圖的相關(guān)實(shí)現(xiàn)方法。
責(zé)任編輯:曹凱
來源:
百度博客