商品缩略图实现
来源:互联网 发布:php中print r 编辑:程序博客网 时间:2024/05/14 14:11
<?php// 验证码类class image { protected $im; protected $img_width; protected $img_height; protected $img_type; static public function make_thumb($ori,$w=200,$h=200) { // 判断原图大小,如果原图比缩略还小,不必处理. // 读出大图当画布 $info = self::getinfo($ori); if($info['func'] === false) { return false; } $createfunc = 'imagecreatefrom' . $info['func']; // 分析出读取大图所用的函数名. $src = $createfunc($ori); // 创建小画布,并把背景做成灰色 $small = imagecreatetruecolor($w,$h); $gray = imagecolorallocate($small,255,255,255); imagefill($small,0,0,$gray); // 复制大图到小图 $scale = min($w/$info['width'], $h/$info['height']); // 以更小的缩小比例为准,才能装下 // 根据比例,算最终复制过去的块的大小. $realw = $info['width'] * $scale; $realh = $info['height'] * $scale; // 生成小图 /* bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) */ // 计算留白 $lw = round(($w - $realw)/2); // 计算左侧留的宽度 $lh = round(($h - $realh)/2); // 计算上部留的高度 imagecopyresampled($small,$src,$lw,$lh,0,0,$realw,$realh,$info['width'],$info['height']); // 计算小图片的存储路径$pic = str_replace(ROOT,'',$ori);; $thumburl = str_replace('.','_thumb.',$pic);$thumburl = ROOT . $thumburl; $imagefunc = 'image' . $info['func']; if($imagefunc($small,$thumburl)) { return str_replace(ROOT,'',$thumburl); } else { return false; } } static public function getinfo($ori) { $arr = getimagesize($ori); // 如果原始图片分析不出来,直接false if($arr === false) { return false; } $info = array(); $info['width'] = $arr[0]; $info['height'] = $arr[1]; switch($arr[2]) { case 1: $info['func'] = 'gif'; break; case 2: $info['func'] = 'jpeg'; break; case 3: $info['func'] = 'png'; break; case 6: $info['func'] = 'wbmp'; break; default: $info['func'] = false; } return $info; }}?>