joomla手動(dòng)實(shí)現(xiàn)后臺(tái)上傳和縮略圖入庫(kù)擴(kuò)展實(shí)現(xiàn)方法分享
發(fā)布時(shí)間:2012-05-31 00:53:31 作者:佚名
我要評(píng)論

今天抽空來(lái)說(shuō)說(shuō)如何擴(kuò)展上傳圖片的同時(shí)生成縮略圖,這樣就不用在顯示圖的時(shí)候設(shè)置寬度高度,而且可以讓頁(yè)面加載很快,對(duì)于圖片展示類(lèi)型網(wǎng)站和模版類(lèi)網(wǎng)站,我想都是需要這樣一個(gè)實(shí)用的功能的吧
最近比較忙,沒(méi)有時(shí)間寫(xiě)一些joomla教程,今天抽空來(lái)說(shuō)說(shuō)如何擴(kuò)展上傳圖片的同時(shí)生成縮略圖,這樣就不用在顯示圖的時(shí)候設(shè)置寬度高度,而且可以讓頁(yè)面加載很快,對(duì)于圖片展示類(lèi)型網(wǎng)站和模版類(lèi)網(wǎng)站,我想都是需要這樣一個(gè)實(shí)用的功能的吧.joomla1.5版本沒(méi)有自帶這個(gè)功能,今天我就來(lái)實(shí)現(xiàn),并且在上傳的時(shí)候自動(dòng)存入數(shù)據(jù)庫(kù).在數(shù)據(jù)庫(kù)里面,我們用當(dāng)前時(shí)間戳來(lái)保存圖片名字,這樣不會(huì)有重命名問(wèn)題.如果你想保存原名字,那么你可以存入數(shù)據(jù)庫(kù)。對(duì)于圖片我們只保存一張圖片文件的名字,縮略圖我們使用前綴_時(shí)間戳來(lái)保存,時(shí)間戳和大圖是一樣的.這樣可以減少一個(gè)字段。好了原理就是這樣。
對(duì)于上傳來(lái)的圖片,我們需要進(jìn)行處理,例如我們得到的圖像代碼
$file = JRequest::getVar( 'template_full_image', '', 'files', 'array' );//獲得傳過(guò)來(lái)的圖片
jimport('joomla.filesystem.file');
$filenameext=explode(".",$file['name']);
$filenameextcount=count($filenameext);
$outputfile= time().".".$filenameext[(int)$filenameextcount-1];
$filepath = JPath::clean(JPATH_ROOT.DS.'components/com_templateshow/upload/images/'.strtolower($outputfile));
if (!JFile::upload($file['tmp_name'], $filepath)) {
JError::raiseWarning(100, JText::_('Error. Unable to upload file'));
return;
}else{
$types = $filenameext[(int)$filenameextcount-1];
list($width, $height) = getimagesize($filepath);
$thumb = JPath::clean(JPATH_ROOT.DS.'components/com_templateshow/upload/images/s_'.strtolower($outputfile));
if('gif' == $types ){
$gif = imagecreatefromgif($filepath);
imagesavealpha($gif,true);
$gifc = imagecreate(156, 145);
imagealphablending($gifc,false);
imagesavealpha($gifc,true);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagegif($gifc,$thumb);
}
if( 'jpg' ==$types || 'jpeg' ==$types ){
$gif = imagecreatefromjpeg($filepath);
$gifc = imagecreatetruecolor(156, 145);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagejpeg($gifc,$thumb);
}
if( 'png' ==$types ){
$gif = imagecreatefrompng($filepath);
imagesavealpha($gif,true);
$gifc = imagecreatetruecolor(156, 145);
imagealphablending($gifc,false);
imagesavealpha($gifc,true);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagepng($gifc,$thumb);
}
$row->template_full_image = strtolower($outputfile);
//縮略圖文件賦值給字段 }
上邊就是基本代碼,我來(lái)說(shuō)說(shuō)基本流程,就是把傳過(guò)來(lái)的圖片,首先取得擴(kuò)展名,然后記錄當(dāng)前時(shí)間戳,當(dāng)作文件名字保存,上傳這張圖片,接著讀取這張圖片,對(duì)圖片只能處理jpg和png和gif三種格式,也是我們常見(jiàn)的格式,由于這三種圖片的處理,在PHP 手冊(cè)里面也詳細(xì)記述.我們知道jpg最好處理,一般不會(huì)有啥問(wèn)題,但是gif由于背景透明,設(shè)置不對(duì)就會(huì)出現(xiàn)背景黑色,還有png也存在這樣的問(wèn)題,這里我用的if,也可以用其他語(yǔ)句.這里圖片統(tǒng)一縮略大小156 X 146像素大小.數(shù)據(jù)可以自己改,我這是程序中部分代碼,有些地方可能不嚴(yán)格,可能有bug,不過(guò)功能是實(shí)現(xiàn)的,處理方法當(dāng)然多種多樣,總的來(lái)說(shuō)縮略圖處理不難,更簡(jiǎn)單的辦法是你可以寫(xiě)一個(gè)或者網(wǎng)上找一個(gè)不錯(cuò)的圖片處理類(lèi),就可以實(shí)現(xiàn)上傳自動(dòng)生成縮略圖,水印等功能.在這里我就不實(shí)現(xiàn)了.
至于顯示圖片,我們只需要讀取數(shù)據(jù)庫(kù)圖片名稱(chēng),然后把地址連接上即可,由于縮略圖和原圖文件名有鏈接,我是用原圖時(shí)間戳 1300000.jpg,那么縮略圖s_1300000.jpg,這也是常見(jiàn)處理縮略圖和原圖的辦法,時(shí)間戳可以保證圖片不會(huì)覆蓋.
以上是在joomla1.5版本中測(cè)試通過(guò)的,是一個(gè)項(xiàng)目部分代碼,寫(xiě)的很爛,完全手寫(xiě)的,也沒(méi)有找一些類(lèi),也是練習(xí)一下自己的php本身水平,技術(shù)比較差.最近學(xué)到的只是太多了,下次給你們說(shuō)說(shuō)joomla中如何實(shí)現(xiàn)ajax的get方式提交,實(shí)現(xiàn)模擬單選和復(fù)選,這里用的是我們常用的jquery庫(kù),并非其他ajax,我們javascript也不怎么樣,主要是用jquery來(lái)寫(xiě)js代碼.還有如何實(shí)現(xiàn)ajax搜索功能,這里的關(guān)鍵字通過(guò)空格隔開(kāi),使用到了多次查詢連查,jquery檢測(cè),jquery插件from,以及正則在php應(yīng)用.我的目的是,在學(xué)習(xí)joomla過(guò)程,學(xué)習(xí)php基本功以及jquery的開(kāi)發(fā),以及mysql數(shù)據(jù)庫(kù).有相同興趣的朋友可以@我.
老規(guī)矩,附上源碼部分,僅供參考,不能使用:下載我 /201205/yuanma/com_templateshow.rar
(本文原創(chuàng) by Yoby)
對(duì)于上傳來(lái)的圖片,我們需要進(jìn)行處理,例如我們得到的圖像代碼
復(fù)制代碼
代碼如下:$file = JRequest::getVar( 'template_full_image', '', 'files', 'array' );//獲得傳過(guò)來(lái)的圖片
jimport('joomla.filesystem.file');
$filenameext=explode(".",$file['name']);
$filenameextcount=count($filenameext);
$outputfile= time().".".$filenameext[(int)$filenameextcount-1];
$filepath = JPath::clean(JPATH_ROOT.DS.'components/com_templateshow/upload/images/'.strtolower($outputfile));
if (!JFile::upload($file['tmp_name'], $filepath)) {
JError::raiseWarning(100, JText::_('Error. Unable to upload file'));
return;
}else{
$types = $filenameext[(int)$filenameextcount-1];
list($width, $height) = getimagesize($filepath);
$thumb = JPath::clean(JPATH_ROOT.DS.'components/com_templateshow/upload/images/s_'.strtolower($outputfile));
if('gif' == $types ){
$gif = imagecreatefromgif($filepath);
imagesavealpha($gif,true);
$gifc = imagecreate(156, 145);
imagealphablending($gifc,false);
imagesavealpha($gifc,true);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagegif($gifc,$thumb);
}
if( 'jpg' ==$types || 'jpeg' ==$types ){
$gif = imagecreatefromjpeg($filepath);
$gifc = imagecreatetruecolor(156, 145);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagejpeg($gifc,$thumb);
}
if( 'png' ==$types ){
$gif = imagecreatefrompng($filepath);
imagesavealpha($gif,true);
$gifc = imagecreatetruecolor(156, 145);
imagealphablending($gifc,false);
imagesavealpha($gifc,true);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagepng($gifc,$thumb);
}
$row->template_full_image = strtolower($outputfile);
//縮略圖文件賦值給字段 }
上邊就是基本代碼,我來(lái)說(shuō)說(shuō)基本流程,就是把傳過(guò)來(lái)的圖片,首先取得擴(kuò)展名,然后記錄當(dāng)前時(shí)間戳,當(dāng)作文件名字保存,上傳這張圖片,接著讀取這張圖片,對(duì)圖片只能處理jpg和png和gif三種格式,也是我們常見(jiàn)的格式,由于這三種圖片的處理,在PHP 手冊(cè)里面也詳細(xì)記述.我們知道jpg最好處理,一般不會(huì)有啥問(wèn)題,但是gif由于背景透明,設(shè)置不對(duì)就會(huì)出現(xiàn)背景黑色,還有png也存在這樣的問(wèn)題,這里我用的if,也可以用其他語(yǔ)句.這里圖片統(tǒng)一縮略大小156 X 146像素大小.數(shù)據(jù)可以自己改,我這是程序中部分代碼,有些地方可能不嚴(yán)格,可能有bug,不過(guò)功能是實(shí)現(xiàn)的,處理方法當(dāng)然多種多樣,總的來(lái)說(shuō)縮略圖處理不難,更簡(jiǎn)單的辦法是你可以寫(xiě)一個(gè)或者網(wǎng)上找一個(gè)不錯(cuò)的圖片處理類(lèi),就可以實(shí)現(xiàn)上傳自動(dòng)生成縮略圖,水印等功能.在這里我就不實(shí)現(xiàn)了.
至于顯示圖片,我們只需要讀取數(shù)據(jù)庫(kù)圖片名稱(chēng),然后把地址連接上即可,由于縮略圖和原圖文件名有鏈接,我是用原圖時(shí)間戳 1300000.jpg,那么縮略圖s_1300000.jpg,這也是常見(jiàn)處理縮略圖和原圖的辦法,時(shí)間戳可以保證圖片不會(huì)覆蓋.
以上是在joomla1.5版本中測(cè)試通過(guò)的,是一個(gè)項(xiàng)目部分代碼,寫(xiě)的很爛,完全手寫(xiě)的,也沒(méi)有找一些類(lèi),也是練習(xí)一下自己的php本身水平,技術(shù)比較差.最近學(xué)到的只是太多了,下次給你們說(shuō)說(shuō)joomla中如何實(shí)現(xiàn)ajax的get方式提交,實(shí)現(xiàn)模擬單選和復(fù)選,這里用的是我們常用的jquery庫(kù),并非其他ajax,我們javascript也不怎么樣,主要是用jquery來(lái)寫(xiě)js代碼.還有如何實(shí)現(xiàn)ajax搜索功能,這里的關(guān)鍵字通過(guò)空格隔開(kāi),使用到了多次查詢連查,jquery檢測(cè),jquery插件from,以及正則在php應(yīng)用.我的目的是,在學(xué)習(xí)joomla過(guò)程,學(xué)習(xí)php基本功以及jquery的開(kāi)發(fā),以及mysql數(shù)據(jù)庫(kù).有相同興趣的朋友可以@我.
老規(guī)矩,附上源碼部分,僅供參考,不能使用:下載我 /201205/yuanma/com_templateshow.rar
(本文原創(chuàng) by Yoby)
相關(guān)文章
- 這篇文章主要介紹了Fastadmin的安裝與使用方法,需要的朋友可以參考下2020-08-06
安裝FastAdmin時(shí)報(bào)1146 Table 'fastadmin.fa_admin' doesn't exist錯(cuò)誤
有部分小伙伴在安裝FastAdmin時(shí)報(bào)以下錯(cuò)誤,SQLSTATE[42S02]: Base table or view not found: 1146 Table 'fastadmin.fa_admin' doesn't exist2020-08-05UTF-8文件BOM信息自動(dòng)檢測(cè)和自動(dòng)清除源碼
BOM信息是文件開(kāi)頭的一串隱藏的字符,用于讓某些編輯器識(shí)別這是個(gè)UTF-8編碼的文件,也編輯器自動(dòng)加上的這個(gè)會(huì)導(dǎo)致頁(yè)面頭部會(huì)出現(xiàn)一個(gè)空白行;如果是織夢(mèng)的程序也會(huì)引起驗(yàn)證2020-02-17- 在本篇文章里小編給大家整理的是關(guān)于蘋(píng)果cms采集插件安裝的步驟和方法,有需要的朋友們可以學(xué)習(xí)下。2019-12-05
- 在本篇文章里小編給大家整理的是關(guān)于蘋(píng)果cms添加播放器的方法步驟,對(duì)此有需要的朋友們可以學(xué)習(xí)下。2019-12-05
- 在本篇文章里小編給大家分享的是關(guān)于蘋(píng)果cms更換logo的方法和步驟,有需要的朋友們可以學(xué)習(xí)參考下。2019-12-05
- 在本篇文章里小編給大家整理的是關(guān)于海洋cms電影源碼安裝步驟方法以及相關(guān)知識(shí)點(diǎn),有興趣的朋友們學(xué)習(xí)下。2019-12-05
蘋(píng)果CMS自適應(yīng)手模板設(shè)置方法
在本篇文章里小編給大家整理的是關(guān)于蘋(píng)果CMS自適應(yīng)手模板設(shè)置方法,有需要的朋友們參考學(xué)習(xí)下。2019-12-05- 在本篇文章里小編給大家整理的是關(guān)于蘋(píng)果海洋CMS自定義采集助手設(shè)置方法,有需要的朋友們學(xué)習(xí)下。2019-12-05
- 這篇文章主要為大家介紹了蘋(píng)果cms添加幻燈片的操作方法,步驟很簡(jiǎn)單,有需要的朋友們跟著操作下。2019-12-02