使用PHP写了一个图片分割等份工具,便于前台页面切图时使用。
2014-04-01 16:26
351 查看
目的:
由于网站更新活动较频繁,其大多数以静态图片为主,设计人员在除了设计图后都要给前端制作人员再次切图从而达到页面加载图片缓慢的问题,为了减少工作量做了该工具。
功能:
上传一张图,将其分割成指定等份的小图。
将分割出的多张图片嵌套进公共的活动模版里,并为每张图片设置上要跳转的链接,直接生成页面html
预览图:
主要实现代码:
如果还想有继续研究的,请下载附件。
附件下载地址:http://files.cnblogs.com/guangxiaoluo/edmtools.rar
由于网站更新活动较频繁,其大多数以静态图片为主,设计人员在除了设计图后都要给前端制作人员再次切图从而达到页面加载图片缓慢的问题,为了减少工作量做了该工具。
功能:
上传一张图,将其分割成指定等份的小图。
将分割出的多张图片嵌套进公共的活动模版里,并为每张图片设置上要跳转的链接,直接生成页面html
预览图:
主要实现代码:
/** * Created by PhpStorm. * User: Administrator * Date: 14-3-26 * Time: 下午6:31 */ //处理图像分割8等分,每等份加链接 class dopic { public $path = './static/file/'; //大图路径 public $filename = ''; //大图名字 public $newpath = './static/result/'; //新的小图存放目录 public $exNum = array(1,2,3,4,5,6,7,8); //每等份图的名字 public $htmlpath = './static/html/'; //生成html的目录 public $templatedir = './static/'; //html模版目录 public $templatefile = 'edm.htm'; //html模版目录 public $links = ''; //链接地址 public $htmlfilename = ''; //生成html的文件名称 public function __construct () { ini_set( 'memory_limit', '220M' ); } //分割图片8等份 public function explodepic () { $file = $this->path.$this->filename; //大图文件地址 $filePre = explode('.', $this->filename); //获取大图文件名 $newfile = $this->newpath.$filePre[0]; //获取小图存放路径,以大图文件名为名称创建一个目录 self::create_dir($newfile); //创建小图存放路径 $ext = $this->getExt($this->filename); //获取大图的尺寸 list($width, $height, $type, $attr) = getimagesize($file); //算出每等份尺寸, //不被整除,保证不留白 $minW = $width; $minHx = ceil ($height / count($this->exNum)); //分别截取出小图 $bigpic = imagecreatefromjpeg($file); $smallpic = imagecreatetruecolor($minW, $minHx); //新建一个图像 for ($i = 0; $i < count($this->exNum); $i++) { if ($i == (count($this->exNum)-1)) { $minH = $height - $minHx * $i; $smallpic = imagecreatetruecolor($minW, $minH); //新建一个图像 } else { $minH = $minHx; } imagecopy($smallpic, $bigpic ,0,0,0,($i*$minHx), $minW, $minH); //复制图像一部分 imagejpeg($smallpic, $newfile.'/'.$this->exNum[$i].'.jpg',100); //输出小图 } return $newfile; } //生成html public function mkHtml() { $str = file_get_contents('http://'.$_SERVER['HTTP_HOST'].ltrim($this->templatedir, '.').$this->templatefile); $newstr = str_replace("#areplace", $this->links, $str); $fname = $this->getfilename($this->filename); $newstr = str_replace("#filename",$fname , $newstr); self::create_dir($this->htmlpath.$fname); file_put_contents($this->htmlpath.$fname.'/index.html', $newstr); return $this->htmlpath.$fname.'/index.html'; } //获取文件名部分 public function getfilename ($filename) { $res = explode('.', $filename); return $res[0]; } //创建目录 public function create_dir($dir){ return is_dir($dir) or (self::create_dir(dirname($dir))and mkdir($dir, 0777)); } /** *函数:getExt() *@param:$filename文件名称 *@return:返回上传文件的扩展名称 */ public function getExt($filename){ $array = explode('.', $filename); $ext = array_pop($array); return strtolower($ext); } /** * @desc 保存生成的图片 * @access private setPic() * @param $imgSource 图像的资源 * @param $path 要保存的图片路径地址和名称 * @param $ext 要保存路径的扩展名称 */ private function setPic($imgSource, $path, $ext){ switch (strtolower($ext)){ case 'jpg': case 'jpeg': return imagejpeg($imgSource,$path); break; case 'gif' : return imagegif($imgSource, $path); break; case 'png' : return imagepng($imgSource, $path); break; default : $this->getErrorInfo("暂不支持你的扩展名称,请尝试jpg,gif,png"); } } /** *函数:getErrorInfo() *@param:$error错误信息 *@return:返回错误信息 */ public function getErrorInfo($error){ echo '<script type="text/javascript">alert("错误信息:'.$error.'");</script>'; exit(); } } @session_start(); if (isset($_SESSION['images']) && !empty($_SESSION['images']) && isset($_POST['links'])) { //获取提交的表单数据 $links = $_POST['links']; if ($links == '') { echo '<script>alert("链接不能为空");</script>'; exit; } $filename = $_SESSION['images']; //测试 $res = new dopic(); $res->filename = $filename; $res->links = $links; $newfile = $res->explodepic(); $html = $res->mkHtml(); $_SESSION['url'] = 'http://'.$_SERVER['HTTP_HOST'].$html; header('Location:index.php'); }
如果还想有继续研究的,请下载附件。
附件下载地址:http://files.cnblogs.com/guangxiaoluo/edmtools.rar
相关文章推荐
- php在一个页面中使用另一个页面中的信息
- wordpress文章,页面,小工具如何使用php代码
- 扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面
- 【实例】使用canvas缓缓加载一个图片到web页面中
- JS动态切换图片(一个页面中可多次使用)
- 使用PHP破解防盗链图片的一个简单方法
- 使用php后台给自己做一个页面路由,配合ajax实现局部刷新。
- 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站
- PHP程序开发之使用header定义一个php页面为utf-8编码或GBK编码
- 页面静态化3 --- 使用PHP页面缓存机制来完成页面静态化(下)操作一个案例(新闻管理系统)
- 扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面
- 图片选取,压缩,裁剪等的一个工具使用
- 前台使用base64作为图片存储,php处理
- 使用PHP+JavaScript将HTML页面转换为图片的实例分享
- [置顶] adaptive-images的使用方法 php 服务器端 图片处理相关工具
- php使用jquery Form 实现页面无刷新上传图片,并预览图片
- 使用phpqrcode生成某一个页面的二维码
- php中使用工具Netpbm转换图片
- [工具配置]使用requirejs模块化开发多页面一个入口js的使用方式
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager2、其中小点的图片用一个selector来控制颜色,point.xml:现欢迎引导页面