台灣深藍vBulletin技術論壇  

返回   台灣深藍vBulletin技術論壇 > 深藍官方整理發表區 > 教學文件深藍官方整理區 > 系統架設教學版

系統架設教學版 Apache Mysql 等架設教學

回覆
 
主題工具
舊 2007-01-17, 06:35 PM   #1
Senior Member
 
註冊日期: 2005-05-29
住址: http://mamba.zapto.org/bbs/
文章: 119
預設 【分享】PHP中製作圖片縮圖

朋友昨天問我PHP中如何製作圖片的縮圖
Google一下(google在此處是動詞還是名詞?)中找了到了不少的資料
最後決定使用PHP官方站上的範例(webmaster at WWW.ELLESSEWEB.NET)
來進行修改保留約四十趴的原始程式碼
本方法只將圖片縮小後直接顯示於browser
並沒有將製作完的縮圖存檔
如需存檔的功能請自行修改程式碼

PHP 代碼:
function makeThumbnail($arg_strFileName$arg_intThumbWd 100
{
    
$aryImageInfo        getImageSize($arg_strFileName);     
    
$objImageCreate        null;    
    
$aryExcuteFunction    null;
    
$strErrMsg        '';
    
$intThumbHt        0;
    
$aryFunImageCreateFrom = array(
        
'GIF'    => 'imageCreateFromGIF',
        
'JPG'   => 'imageCreateFromJPEG',
        
'PNG'   => 'imageCreateFromPNG',
        
'WBMP'  => 'imageCreateFromWBMP'    
    
);
    
$aryFunImageOutput = array(
        
'GIF'    => 'imagegif',
        
'JPG'   => 'imagejpeg',
        
'PNG'   => 'imagepng',
        
'WBMP'  => 'imagewbmp'    
    
);        
    switch (
$aryImageInfo['mime']) 
    {
        case 
'image/gif':
            if (
imagetypes() & IMG_GIF)  
            { 
                
$aryExcuteFunction['CreateFrom'] = $aryFunImageCreateFrom['GIF'];
                
$aryExcuteFunction['OutPutFrom'] = $aryFunImageOutput['GIF'];
            } 
            else 
            {
                
$strErrMsg 'GIF images are not supported<br />';
            }
            break;
        case 
'image/jpeg':
            if (
imagetypes() & IMG_JPG
            {
                
$aryExcuteFunction['CreateFrom'] = $aryFunImageCreateFrom['JPG'];
                
$aryExcuteFunction['OutPutFrom'] = $aryFunImageOutput['JPG'];
            }
            else
            {
                
$strErrMsg 'JPEG images are not supported<br />';
            }
            break;
        case 
'image/png':
            if (
imagetypes() & IMG_PNG)
            {
                
$aryExcuteFunction['CreateFrom'] = $aryFunImageCreateFrom['PNG'];
                
$aryExcuteFunction['OutPutFrom'] = $aryFunImageOutput['PNG'];
            } 
            else
            {
                
$strErrMsg 'PNG images are not supported<br />';
            }
            break;
        case 
'image/wbmp':
            if (
imagetypes() & IMG_WBMP
            {
                
$aryExcuteFunction['CreateFrom'] = $aryFunImageCreateFrom['WBMP'];
                
$aryExcuteFunction['OutPutFrom'] = $aryFunImageOutput['WBMP'];
            } 
            else
            {
                
$strErrMsg 'WBMP images are not supported<br />';
            }
            break;
        default:
            
$strErrMsg $arg_strImageFormat.' images are not supported<br />';
            break;
    }
    if(empty(
$strErrMsg))
    {        
        
$objImageCreate $aryExcuteFunction['CreateFrom']($arg_strFileName);        
        
$intThumbHt round($aryImageInfo[1] * $arg_intThumbWd $aryImageInfo[0]);
        
$objTargetImageCreate imageCreateTrueColor($arg_intThumbWd,$intThumbHt);       
        
imageCopyResampled($objTargetImageCreate$objImageCreate0000$arg_intThumbWd$intThumbHt$aryImageInfo[0], $aryImageInfo[1]);      
        
$aryExcuteFunction['OutPutFrom']($objTargetImageCreate);      
        
imageDestroy($objImageCreate);
        
imageDestroy($objTargetImageCreate);
    }
    else
    {
        echo 
$strErrMsg;
        exit;
    }

這麼使用這個Function ?
makeThumbnail("含路徑的檔名",縮小的寬度);
例如
//firefox需要發送圖片標頭
header("Content-type: image/jpg");
makeThumbnail("pic/20070117-001.jpg",200);
__________________
有空來灌點水...
http://tw.myblog.yahoo.com/jw!v9EKjxOXCkSQzfYe5uE-/
陳醉欣 目前離線   回覆時引用此篇文章
舊 2007-01-17, 07:34 PM   #2
論壇站長
 
註冊日期: 2004-10-06
住址: http://www.twvbb.com
文章: 1,574
預設

大作不斷湧現(茶),話說我也有一個文字->圖片的函數,等等來整理分享一下

這裡的 Google 是動詞 轉移到精華區
__________________
vBulletin 問題請在論壇討論,請勿私下詢問我,以利後人參考
ckmarkhsu 目前離線   回覆時引用此篇文章
舊 2007-01-17, 09:54 PM   #3
Senior Member
 
註冊日期: 2005-05-29
住址: http://mamba.zapto.org/bbs/
文章: 119
預設

第二版
減少不必要的程式碼.

PHP 代碼:
function makeThumbnail($arg_strFileName$arg_intThumbWd 100)
{
    
$aryImageInfo        getImageSize($arg_strFileName);     
    
$objImageCreate        null;    
    
$aryExcuteFunction    null;
    
$strErrMsg        '';
    
$intThumbHt        0;
    
$aryFunImageCreateFrom = array(
        
'image/gif'    => 'imageCreateFromGIF',
        
'image/jpeg'   => 'imageCreateFromJPEG',
        
'image/png'   => 'imageCreateFromPNG',
        
'image/wbmp'  => 'imageCreateFromWBMP'    
    
);
    
$aryFunImageOutput = array(
        
'image/gif'    => 'imagegif',
        
'image/jpeg'   => 'imagejpeg',
        
'image/png'   => 'imagepng',
        
'image/wbmp'  => 'imagewbmp'    
    
);     
    if(
array_key_exists($aryImageInfo['mime'],$aryFunImageCreateFrom))
    {       
        
$aryExcuteFunction['CreateFrom'] = $aryFunImageCreateFrom[$aryImageInfo['mime']];
        
$aryExcuteFunction['OutPutFrom'] = $aryFunImageOutput[$aryImageInfo['mime']];
    }
    else
    {
        
$strErrMsg $arg_strImageFormat.' images are not supported<br />';
    }    
    if(empty(
$strErrMsg))
    {  
        
$objImageCreate $aryExcuteFunction['CreateFrom']($arg_strFileName);        
        
$intThumbHt round($aryImageInfo[1] * $arg_intThumbWd $aryImageInfo[0]);
        
$objTargetImageCreate imageCreateTrueColor($arg_intThumbWd,$intThumbHt);       
        
imageCopyResampled($objTargetImageCreate$objImageCreate0000$arg_intThumbWd$intThumbHt$aryImageInfo[0], $aryImageInfo[1]);      
        
$aryExcuteFunction['OutPutFrom']($objTargetImageCreate);      
        
imageDestroy($objImageCreate);
        
imageDestroy($objTargetImageCreate);
    }
    else
    {
        echo 
$strErrMsg;       
        exit;
    }

__________________
有空來灌點水...
http://tw.myblog.yahoo.com/jw!v9EKjxOXCkSQzfYe5uE-/

此篇文章於 2007-01-17 09:57 PM 被 陳醉欣 編輯.
陳醉欣 目前離線   回覆時引用此篇文章
舊 2007-01-17, 10:21 PM   #4
Senior Member
 
註冊日期: 2005-05-29
住址: http://mamba.zapto.org/bbs/
文章: 119
預設

第三版.......

PHP 代碼:
function makeThumbnail($arg_strFileName$arg_intThumbWd 100)
{
    
$aryImageInfo       getImageSize($arg_strFileName);  
    
$intThumbHt            0;    
    
$aryImageFunction = array(
        
'image/gif' => 
            array(
                
'CreateFrom'=>'imageCreateFromGIF',
                
'OutPutFrom'=>'imagegif'                            
            
),
        
'image/jpeg' => 
            array(
                
'CreateFrom'=>'imageCreateFromJPEG',
                
'OutPutFrom'=>'imagejpeg'    
            
),
        
'image/png' => 
            array(
                
'CreateFrom'=>'imageCreateFromPNG',
                
'OutPutFrom'=>'imagepng'    
            
),
        
'image/wbmp' => 
            array(
                
'CreateFrom'=>'imageCreateFromWBMP',
                
'OutPutFrom'=>'imagewbmp'    
            
)    
    );    
    if(
array_key_exists($aryImageInfo['mime'],$aryImageFunction))
    {
        
$aryExcuteFunction        $aryImageFunction[$aryImageInfo['mime']];    
        
$objImageCreate            $aryExcuteFunction['CreateFrom']($arg_strFileName);        
        
$intThumbHt                round($aryImageInfo[1] * $arg_intThumbWd $aryImageInfo[0]);
        
$objTargetImageCreate    imageCreateTrueColor($arg_intThumbWd,$intThumbHt);       
        
imageCopyResampled($objTargetImageCreate$objImageCreate0000$arg_intThumbWd$intThumbHt$aryImageInfo[0], $aryImageInfo[1]);      
        
$aryExcuteFunction['OutPutFrom']($objTargetImageCreate);      
        
imageDestroy($objImageCreate);
        
imageDestroy($objTargetImageCreate);
    }
    else
    {
        echo 
$aryImageInfo['mime'].' images are not supported<br />';
        exit;
    }        

__________________
有空來灌點水...
http://tw.myblog.yahoo.com/jw!v9EKjxOXCkSQzfYe5uE-/
陳醉欣 目前離線   回覆時引用此篇文章
舊 2007-01-18, 12:49 PM   #5
Senior Member
 
註冊日期: 2005-05-29
住址: http://mamba.zapto.org/bbs/
文章: 119
預設

第四版.........
PHP 代碼:
function makeThumbnail($arg_strFileName$arg_intThumbWd 100)
{
    
$aryImageInfo   getImageSize($arg_strFileName);  
    
$intThumbHt        0;    
    
$aryImageFunction = array(
        
'image/gif' => 
            array(
                
'CreateFrom'=>'imageCreateFromGIF',
                
'OutPutFrom'=>'imagegif'                            
        
),
        
'image/jpeg' => 
            array(
                
'CreateFrom'=>'imageCreateFromJPEG',
                
'OutPutFrom'=>'imagejpeg'    
        
),
        
'image/png' => 
            array(
                
'CreateFrom'=>'imageCreateFromPNG',
                
'OutPutFrom'=>'imagepng'    
        
),
        
'image/wbmp' => 
            array(
                
'CreateFrom'=>'imageCreateFromWBMP',
                
'OutPutFrom'=>'imagewbmp'    
        
)    
    );    
    if(
array_key_exists($aryImageInfo['mime'],$aryImageFunction))
    {        
        
$objImageCreate         $aryImageFunction[$aryImageInfo['mime']]['CreateFrom']($arg_strFileName);          
        
$intThumbHt             round($aryImageInfo[1] * $arg_intThumbWd $aryImageInfo[0]);
        
$objTargetImageCreate   imageCreateTrueColor($arg_intThumbWd,$intThumbHt); 
        
imageCopyResampled($objTargetImageCreate$objImageCreate0000$arg_intThumbWd$intThumbHt$aryImageInfo[0], $aryImageInfo[1]);      
        
$aryImageFunction[$aryImageInfo['mime']]['OutPutFrom']($objTargetImageCreate);      
        
imageDestroy($objImageCreate);
        
imageDestroy($objTargetImageCreate);
    }
    else
    {
        echo 
$aryImageInfo['mime'].' images are not supported<br />';
        exit;
    }        

__________________
有空來灌點水...
http://tw.myblog.yahoo.com/jw!v9EKjxOXCkSQzfYe5uE-/
陳醉欣 目前離線   回覆時引用此篇文章
舊 2007-01-18, 01:39 PM   #6
Senior Member
 
註冊日期: 2005-05-29
住址: http://mamba.zapto.org/bbs/
文章: 119
預設

第五版.......
呼叫Function後自動發送標頭
PHP 代碼:
 function makeThumbnail($arg_strFileName$arg_intThumbWd 100)
 {
     
$aryImageInfo   getImageSize($arg_strFileName);  
     
$intThumbHt        0;    
     
$aryImageFunction = array(
         
'image/gif' => 
             array(
                 
'CreateFrom'=>'imageCreateFromGIF',
                 
'OutPutFrom'=>'imagegif'                            
         
),
         
'image/jpeg' => 
             array(
                 
'CreateFrom'=>'imageCreateFromJPEG',
                 
'OutPutFrom'=>'imagejpeg'    
         
),
         
'image/png' => 
             array(
                 
'CreateFrom'=>'imageCreateFromPNG',
                 
'OutPutFrom'=>'imagepng'    
         
),
         
'image/wbmp' => 
             array(
                 
'CreateFrom'=>'imageCreateFromWBMP',
                 
'OutPutFrom'=>'imagewbmp'    
         
)    
     );    
     if(
array_key_exists($aryImageInfo['mime'],$aryImageFunction))
     {        
         
header('Content-type: ' $aryImageInfo['mime']);
         
$objImageCreate         $aryImageFunction[$aryImageInfo['mime']]['CreateFrom']($arg_strFileName);          
         
$intThumbHt             round($aryImageInfo[1] * $arg_intThumbWd $aryImageInfo[0]);
         
$objTargetImageCreate   imageCreateTrueColor($arg_intThumbWd,$intThumbHt); 
         
imageCopyResampled($objTargetImageCreate$objImageCreate0000$arg_intThumbWd$intThumbHt$aryImageInfo[0], $aryImageInfo[1]);      
         
$aryImageFunction[$aryImageInfo['mime']]['OutPutFrom']($objTargetImageCreate);  
         
         
imageDestroy($objImageCreate);
         
imageDestroy($objTargetImageCreate);
     }
     else
     {
         echo 
$aryImageInfo['mime'].' images are not supported<br />';
         exit;
     }        
 } 
__________________
有空來灌點水...
http://tw.myblog.yahoo.com/jw!v9EKjxOXCkSQzfYe5uE-/
陳醉欣 目前離線   回覆時引用此篇文章
回覆

書籤

主題工具

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為北京時間。現在的時間是 06:58 PM


Powered by vBulletin® 版本 3.7.3
版權所有 ©2000 - 2008,Jelsoft Enterprises Ltd.
Ad Management by RedTyger