<?php/** * 将大图片自动切割成一定比例的小图片 * 并按照一定规则给小图片命名 * * 使用方法: * 先拷贝大图片到init文件夹下 命名为 1.jpg , 2.jpg ..... * 浏览器输入地址 img.php * 生成小图片于文件夹 temp/zoom1,temp/zoom2.... 下面 * * 注:需要GD2支持 * 作者:阿义 */header("Cache-Control:no-cache,must-revalidate"); //不使用缓存//要切割的图片if (isset($_GET['flag'])) { $flag=$_GET['flag'];}else { $flag=1;}$filename="init/".$flag.".jpg";//大图文件$tempdir="temp/zoom".$flag;//小图存放目录//判断文件是否存在 不存在就切割完毕if(!file_exists($filename)){ if($flag==1){ exit('<p align=center>请确认大图是否位于map/init 下并命名为 1.jpg,2.jpg.......</p>'); }else{ exit('<p align=center>图片切割完毕</p>'); }}else{ if(!file_exists($tempdir)) mkdir($tempdir); echo "<p align=center>正在切割第".$flag."张大图</p>";}/********************************************************************/$picW=256; //切割小图的宽$picH=256; //切割小图的高ini_set( 'memory_limit', '220M' ); //为支持大图片增加内存限制/********************************************************************///获取大图片的属性list($width, $height, $type, $attr) = getimagesize($filename);//从$filename创建一新图像$image = imagecreatefromjpeg($filename);//循环截取大图中的每一部分,生成小图for ($i=0;$i<ceil($width/$picW);$i++){ for ($j=0;$j<ceil($height/$picH);$j++){ $im = @imagecreatetruecolor($picW, $picH) or die("Cannot Initialize new GD image stream");//创建小图像 $colBG = imagecolorallocate($im, 255, 255, 255);//白色背景 imagefill( $im, 0, 0, $colBG );//加白色背景 $picX=($picW*($i+1))<$width?$picW:($picW+$width-$picW*($i+1));//获取截取图片的宽度 $picY=($picH*($j+1))<$height?$picH:($picH+$height-$picH*($j+1));//获取截取图片的高度 imagecopy ( $im, $image, 0, 0, ($picW*$i), ($picH*$j), $picX, $picY );//拷贝大图片的一部分到小图片 imagejpeg($im,$tempdir."/".$j.",".$i.".jpg",75);//创建小图片到磁盘,输出质量为75(0~100) }}imagedestroy($im);//释放与 $im 关联的内存imagedestroy($image);//释放与 $image 关联的内存//跳转到下一张大图echo "<script language='JavaScript'>window.location.href='img.php?flag=".($flag+1)."'</script>";?>