相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
樂道系統(tǒng)增加自動縮略圖功能
現(xiàn)有后臺在添加產(chǎn)品圖或文章圖的時候,無法自動生成縮略圖,上傳兩次,操作頗有些不方便。因此增加自動縮略圖功能。
1、后臺產(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)" />自動生成商品縮略圖</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 目標圖象路徑
// $targetW 目標圖象寬度
// $targetH 目標圖象高度
public function makeThumbnail($srcImgPath,$targetImgPath,$targetW,$targetH)
{
$imgSize = GetImageSize($srcImgPath);
$imgType = $imgSize[2];
//@ 使函數(shù)不向頁面輸出錯誤信息
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擴展提供了兩個函數(shù)來縮放圖象:
ImageCopyResized 在所有GD版本中有效,其縮放圖象的算法比較粗糙,可能會導致圖象邊緣的鋸齒。
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 //不超出指定寬高則直接復制
{
copy($srcImgPath,$targetImgPath);
ImageDestroy($srcImg);
}
}
原來的
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