php 批量生成缩略图代码
2010-07-30 15:20
459 查看
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <TITLE>生成缩略图</TITLE> </HEAD> <BODY> <?php $c = array('dir'=>'./images','newdir'=>'./thumb','w'=>'200','h'=>'200'); //只处理文件名中含有small的文件,如果处理所有文件,请设置为 '.' $only = '.'; //如果不希望覆盖已经存在的图片 将此行设为0; $over = 1; //是否处理GIF图,0为不处理 $regif = 1; if($_GET['do']=='start'){ $file = array(); $dir = $_POST['dir']; $newdir = $_POST['newdir']; $w = intval($_POST['w']); $h = intval($_POST['h']); $d = @dir($dir) or die('目录不存在!'); $config = "<?phpnreturn array('dir'=>'".$dir."','newdir'=>'".$newdir."','w'=>'".$w."','h'=>'".$h."');n?>"; savefile($c, $config); while ($a=$d->read()){ $type = substr(strrchr($a,"."),1); if($a!=='.' && $a!=='..'){ if(is_dir($dir.'/'.$a)){ $zdir[]=$a; } elseif($type=='jpg' || $type=='gif' || $type=='bmp' || $type=='png') { if(strstr($a, $only)){ $file[]=$dir.'/'.$a; } } } } $rand = rand(100,999); $img = new image($dir, $newdir); $img->over = $over; $img->regif= $regif; echo "<div style='width:800px'>"; foreach ($file as $key){ $src = $img->reImg($key, $w, $h); echo "<div style='float:left;border:#666666 1px dotted; width:$w px; height:$h px; padding: 5px; margin:5px;'><img src="$src?$rand" mce_src="$src?$rand"></div>"; } echo "</div>"; die("<br><br><label> <input name="go" type="button" id="go" onClick="location='index.php'" value=" www.111cn.net继 续 处 理 新 的 图 片 "></label><br><br>"); } ?> <div style="clear:both; width:250px; height:110px; border:#006633 1px dashed; padding:5px; font-size:12px; color:#009933"> <form name="form1" method="post" action="?do=start"> <label>源目录: <input name="dir" type="text" id="dir" value="<?=$c['dir']?>"> </label> <br><br> <label>保存到: <input name="newdir" type="text" id="newdir" value="<?=$c['newdir']?>"> </label> <br><br> <label>宽 高: <input name="w" type="text" id="w" value="<?=$c['w']?>" size="7" maxlength="3"> X <input name="h" type="text" id="h" value="<?=$c['h']?>" size="7" maxlength="3"> </label> <br> <br> <label> <input type="submit" name="search" id="search" value="生 成"> </label> </form> </div> ©2008 <a href="http://www.111cn.net" mce_href="http://www.111cn.net" target=_blank>wbsifan</a> </BODY> </HTML> <? <?php //创建目录(目录, [模式]) function mkdirs($l1, $l2 = 0777){ if(!is_dir($l1)){ //如果目录不存在,递归建立 mkdirs(dirname($l1), $l2); return @mkdir($l1, $l2); } return true; } //保存文件(文件, [内容]) function savefile($l1, $l2=''){ if(function_exists(file_put_contents)){ file_put_contents($l1, $l2); } else{ $fp = @fopen($l1, 'wb'); @fwrite($fp, $l2); fclose($fp); } } //获取文件后缀(文件) function getfix($l1){ return end(explode('.', $l1)); } //是否为允许类型(当前, 允许) function checkfix($l1, $l2){ if(!is_array($l2)){ $l2 = explode(',', str_replace(' ', '', $l2)); } return in_array($l1, $l2) ? 1 : 0; } class image{ //源地址 var $src; //新图路径(本地化后) var $newsrc; //允许的图类型 var $allowtype = array('.jpg','.gif','.png','.jpeg'); //是否缩略GIF, 为0不处理 var $regif = 0; //是否保留源文件(1为保留, 0为MD5) var $keep = 0; //是否可以覆盖已存在的图片,为0则不可覆盖 var $over = 0; //图片源目录 var $dir; //处理后的目录 var $newdir; function __construct($l1=null, $l2=null){ $this->dir = $l1 ? $l1 : "./images/temp"; $this->newdir = $l2 ? $l2 : "./images/s"; } function image($l1=null, $l2=null){ $this->__construct($l1, $l2); } /** * 处理后的文件路径 * 将源图片,MD5文件名后保存到新的目录里 * * @ param rename() * @ return 处理后的文件名 */ function reName($src){ //MD5后文件名(例如:3293okoe.gif) $l1 = substr(md5($src),10,10).strrchr($src,"."); //处理后文件名 $l1 = $this->w.'_'.$this->h.'_'.$l1; //返回处理后的地址 return $this->newdir.'/'.$l1; } /** * 生成缩略图 * * @ param Mini(图片地址, 宽度, 高度, 质量) * 如果要保留原来的文件名,请设置 $o->keep = 1; * @ return 处理后的图片地址 */ function Mini($src,$w,$h, $q=80){ $this->src = $src; $this->w = $w; $this->h = $h; //是否处理GIF图 if(strrchr($src, ".") == ".gif" && $this->regif == 0){ return $this->src; } //是否保留原文件名,默认不保留 if(!$this->keep){ //改名后的文件地址 $newsrc = $this->reName($src); } else { //保持原名 $src = str_replace('/', '/', $src); $newsrc = $this->newdir.strrchr($src, "/"); } //如果已存在,直接返回地址 if(file_exists($newsrc) && $this->over == 0){ return $newsrc; } //如果是网络文件,先保存 if(strstr($src, "http://") && !strstr($src, $_SERVER['HTTP_HOST'])){ $src = $this->getimg($src); } //获取图片属性 $arr = getimagesize($src); $ow = $arr[0]; $oh = $arr[1]; $ot = $arr[2]; switch($ot){ case 1: $im = imagecreatefromgif($src); break; case 2: $im = imagecreatefromjpeg($src); break; case 3: $im = imagecreatefrompng($src); break; default: return 0; } //处理缩略图 $nim = imagecreatetruecolor($w,$h); $k1 = round($h/$w,2); $k2 = round($oh/$ow,2); if ($k1<$k2){ $oow = $ow; $ooh = round($ow*$k1); $sw = 0; $sh = ($oh-$ooh)/2; } else { $oow = $oh/$k1; $ooh = $oh; $sw = ($ow-$oow)/2; $sh = 0; } //生成图片 if(function_exists(imagecopyresampled)){ imagecopyresampled($nim,$im,0,0,$sw,$sh,$w,$h,$oow,$ooh); } else { imagecopyresized($nim,$im,0,0,$sw,$sh,$w,$h,$oow,$ooh); } //处理后的目录是否存在 if(!is_dir($this->newdir)){ @mkdir($this->newdir); } //保存图片 switch($ot){ case 1: $rs = imagegif($nim,$newsrc); break; case 2: $rs = imagejpeg($nim,$newsrc,$q); break; case 3: $rs = imagepng($nim,$newsrc); break; default: return 0; } //返回处理后路径 return $newsrc; } /** * 保存网络图片 * * @ param getImg(源图) * @ return 保存后的本地址址(本地目录的MD5文件名) */ function getimg($l1){ $l2 = $this->dir.'/'.substr(md5($l1),10,10).strrchr($l1,"."); //文件存在,直接返回地址 if(file_exists($l2)){ //echo "exits..."; return $l2; } //开始获取文件,并返回新路径 $img = file_get_contents($l1); if($img){ if(!is_dir($this->dir)){ @mkdir($this->dir); } savefile($l2, $img); //echo "file_get.."; return $l2; } } /** * 转换缩略图www.111cn.net(文件名和结构不变) * * @ param mini(源地址, 宽度, 高度, 质量 ) * @ return 生成的地址 */ function reImg($src, $w, $h, $q=80){ $this->keep = 1; return $this->Mini($src, $w, $h, $q); } } ?>
相关文章推荐
- PHP批量生成缩略图的代码
- PHP批量生成缩略图的代码
- 兼容性最强的PHP生成缩略图的代码
- php 上传文件并生成缩略图代码
- php原生代码实现生成缩略图 symfony生成json文件
- js+php实现的图片选框手动裁剪生成缩略图代码
- php编写批量生成不重复的卡号密码代码
- jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
- php文件上传类可生成缩略图代码
- php生成缩略图示例代码分享(使用gd库实现)
- jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
- 兼容性最强的PHP生成缩略图的代码
- VBS调用Photoshop批量生成缩略图的代码
- php编写批量生成不重复的卡号密码代码
- PHP生成缩略图的代码
- 兼容性最强的PHP生成缩略图的代码
- 兼容性最强的PHP生成缩略图的函数代码(修改版)
- php按百分比生成缩略图的代码分享
- php生成缩略图的类代码
- 兼容性最强的PHP生成缩略图的函数代码(修改版)