相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
樂道系統(tǒng)增加自動(dòng)縮略圖功能
現(xiàn)有后臺(tái)在添加產(chǎn)品圖或文章圖的時(shí)候,無(wú)法自動(dòng)生成縮略圖,上傳兩次,操作頗有些不方便。因此增加自動(dòng)縮略圖功能。
1、后臺(tái)產(chǎn)品添加、修改模板
頭部JS(產(chǎn)品為例)
if(i == 0){
upload += '<li><input type="text" title="" class="input rounded" name="picture_url[]" id="picture'+ i +'" size="20" value="'+ picture_url[i] +'" /></li>';
upload += '<li><iframe src="upload.php?dir=product&preview=upload_preview&return_id=picture'+ i +'" width="183" height="30" border="0" scrolling="no" frameborder="0" id="upload_'+ i +'" style="visibility:hidden"></iframe></li><li>';
}else{
upload += '<li><input type="text" title="" class="input rounded" name="picture_url[]" id="picture'+ i +'" size="20" value="'+ picture_url[i] +'" /></li>';
upload += '<li><iframe src="upload.php?dir=product&preview=upload_preview&thumb_w='+picture[0][1]+'&thumb_h='+picture[0][2]+'&return_id=picture'+ i +'&makeThumb='+ i +'" width="183" height="30" border="0" scrolling="no" frameborder="0" id="upload_'+ i +'"></iframe></li><li>';
}
if(i == 0){
upload += '<input type="checkbox" id="auto_thumb" name="auto_thumb" checked="true" value="1" onclick="handleAutoThumb(this.checked)" />自動(dòng)生成商品縮略圖</label> <a href="javascript:sheets(2);"><img src="../inc/templates/manage/images/operation/add_2.png" width="16" height="16" title="{:$lang['page']['add_upload']:}" /></a> ';
upload += '<a href="javascript:sheets(1);"><img src="../inc/templates/manage/images/operation/cut_2.png" width="16" height="16" title="{:$lang['page']['del_upload']:}" /></a>';
}
增加部分
function handleAutoThumb(checked)
{
if(document.getElementById('upload_0').style.visibility=='hidden'){
document.getElementById('upload_0').style.visibility='visible';
document.getElementById('upload_1').src='upload.php?dir=product&preview=upload_preview&return_id=picture1';
}else{
document.getElementById('upload_0').style.visibility='hidden';
document.getElementById('upload_1').src='upload.php?dir=product&preview=upload_preview&thumb_w='+picture[0][1]+'&thumb_h='+picture[0][2]+'&return_id=picture1&makeThumb=1';
}
}
2、上傳文件
$upload->makeThumb = $_GET['makeThumb']== 1 ? true : false; //是否開啟生成縮略圖 樂道增加 2014.4.26
$upload->thumb_w = $_GET['thumb_w']; //縮略圖寬 樂道增加 2014.4.26
$upload->thumb_h = $_GET['thumb_h']; //縮略圖高 樂道增加 2014.4.26
約57行
if($upload->makeThumb){
echo 'parent.document.getElementById("picture0").value = "'.$upload->new_filename_smalls.'";'; //縮略圖路徑 樂道增加 2014.4.26
}
3、上傳類文件
public $makeThumb = true; //是否開啟生成縮略圖 樂道增加 2014.4.26
public $new_filename_smalls = ''; //縮略圖路徑 樂道增加 2014.4.26
public $thumb_w = '150'; //縮略圖寬 樂道增加 2014.4.26
public $thumb_h = '100'; //縮略圖高 樂道增加 2014.4.26
增加縮略圖函數(shù)
// 增加的縮略圖處理函數(shù) 樂道增加 2014.4.26
// 只考慮jpg,png,gif格式
// $srcImgPath 源圖象路徑
// $targetImgPath 目標(biāo)圖象路徑
// $targetW 目標(biāo)圖象寬度
// $targetH 目標(biāo)圖象高度
public function makeThumbnail($srcImgPath,$targetImgPath,$targetW,$targetH)
{
$imgSize = GetImageSize($srcImgPath);
$imgType = $imgSize[2];
//@ 使函數(shù)不向頁(yè)面輸出錯(cuò)誤信息
switch ($imgType)
{
case 1:
$srcImg = @ImageCreateFromGIF($srcImgPath);
break;
case 2:
$srcImg = @ImageCreateFromJpeg($srcImgPath);
break;
case 3:
$srcImg = @ImageCreateFromPNG($srcImgPath);
break;
}
//取源圖象的寬高
$srcW = ImageSX($srcImg);
$srcH = ImageSY($srcImg);
if($srcW>$targetW || $srcH>$targetH)
{
$targetX = 0;
$targetY = 0;
if ($srcW > $srcH)
{
$finaW=$targetW;
$finalH=round($srcH*$finaW/$srcW);
$targetY=floor(($targetH-$finalH)/2);
}
else
{
$finalH=$targetH;
$finaW=round($srcW*$finalH/$srcH);
$targetX=floor(($targetW-$finaW)/2);
}
//function_exists 檢查函數(shù)是否已定義
//ImageCreateTrueColor 本函數(shù)需要GD2.0.1或更高版本
if(function_exists("ImageCreateTrueColor"))
{
$targetImg=ImageCreateTrueColor($targetW,$targetH);
}
else
{
$targetImg=ImageCreate($targetW,$targetH);
}
$targetX=($targetX<0)?0:$targetX;
$targetY=($targetX<0)?0:$targetY;
$targetX=($targetX>($targetW/2))?floor($targetW/2):$targetX;
$targetY=($targetY>($targetH/2))?floor($targetH/2):$targetY;
//背景白色
$white = ImageColorAllocate($targetImg, 255,255,255);
ImageFilledRectangle($targetImg,0,0,$targetW,$targetH,$white);
/*
PHP的GD擴(kuò)展提供了兩個(gè)函數(shù)來(lái)縮放圖象:
ImageCopyResized 在所有GD版本中有效,其縮放圖象的算法比較粗糙,可能會(huì)導(dǎo)致圖象邊緣的鋸齒。
ImageCopyResampled 需要GD2.0.1或更高版本,其像素插值算法得到的圖象邊緣比較平滑,
該函數(shù)的速度比ImageCopyResized慢。
*/
if(function_exists("ImageCopyResampled"))
{
ImageCopyResampled($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);
}
else
{
ImageCopyResized($targetImg,$srcImg,$targetX,$targetY,0,0,$finaW,$finalH,$srcW,$srcH);
}
switch ($imgType) {
case 1:
ImageGIF($targetImg,$targetImgPath);
break;
case 2:
ImageJpeg($targetImg,$targetImgPath);
break;
case 3:
ImagePNG($targetImg,$targetImgPath);
break;
}
ImageDestroy($srcImg);
ImageDestroy($targetImg);
}
else //不超出指定寬高則直接復(fù)制
{
copy($srcImgPath,$targetImgPath);
ImageDestroy($srcImg);
}
}
原來(lái)的
if(@copy($this->field['tmp_name'],$target) || (function_exists('move_uploaded_file') && @move_uploaded_file($this->field['tmp_name'],$target))){
@chmod ($target,$this->chmod_files);
后增加
if($makeThumb = $this->makeThumb){ //樂道增加 2014.4.26
$small_pic = $this -> makeThumbnail($target,$this->save_dir."small_".$this->new_filename,$this->thumb_w,$this->thumb_h);//120,90為小圖寬,高
$this->new_filename_smalls = $this->save_dir."small_".$this->new_filename;
} //樂道增加 2014.4.26