发布时间:2014-09-05 10:27:43作者:知识屋
<?php class ImageCut { public $path = ''; public $key = ''; public function __construct() { } public function set_image($path) { $this->path = $path; } public function header_image(){ header('Content-type:image/jpeg'); } public function header_304(){ //304缓存 $this->key = $etag = md5_file($this->path); $last_mod = filemtime($this->path); header('ETag:'.$etag); header('Last-Modified:'.gmdate('D, d M Y H:i:s', $last_mod) . ' GMT'); if ((isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_mod) || (isset($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) < $last_mod) || (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)) { header("HTTP/1.1 304 Not Modified"); return true; } else { return false; } } public function get_data($width,$height){ if($this->path) { $path = $this->path; } else { trigger_error('unset path'); } if(!file_exists($path)) { trigger_error('file not exist'); } $img_type = exif_imagetype($path); $old_size = getimagesize($path); $old_width = $old_size[0]; $old_height = $old_size[1]; if($width==0 && $height==0) { $width = $old_width; $height = $old_height; } else if($width==0) { if($height>$old_height) { $height = $old_height; } $width = $height/$old_height * $old_width; } else if($height==0) { if($width>$old_width) { $width = $old_width; } $height = $width/$old_width * $old_height; } $dst_wh = $width/$height; if($old_height>($old_width/$dst_wh)) { $src_width = $old_width; $src_height = $old_width/$dst_wh; $src_x = 0; $src_y = ($old_height-$src_height)/2; } else { $src_height = $old_height; $src_width = $old_height*$dst_wh; $src_y = 0; $src_x = ($old_width-$src_width)/2; } switch($img_type) { case IMAGETYPE_JPEG: $img = imagecreatefromjpeg($path); break; case IMAGETYPE_PNG: $img = imagecreatefrompng($path); break; case IMAGETYPE_GIF: $img = imagecreatefromgif($path); break; } if($src_width<$width) { $width = $src_width; } if($src_height<$height) { $height = $src_height; } //重新画 $newimage = imagecreatetruecolor($width,$height); imagecopyresampled($newimage,$img,0,0,$src_x,$src_y,$width,$height,$src_width,$src_height); //开始缓存图片 ob_start(); imagejpeg($newimage,false,90); $data = ob_get_contents(); ob_end_clean(); imagedestroy($img); imagedestroy($newimage); return $data; } public function show($width,$height){ $this->header_image(); $if_304 = $this->header_304(); if($if_304) { return; } echo $this->get_data($width, $height); } } $cut = new ImageCut(); $cut->set_image('1.jpg');//path可以通过参数传过来 $cut->show(200,200);//随意设置宽高,可以通过参数传过来,?>
如何对PHP文件进行加密方法 PHP实现加密的几种方式介绍
php生成圆角图片的方法 电脑中php怎么生成圆角图片教程
用PHP构建一个留言本方法步骤 php怎么实现留言板功能
php中三元运算符用法 php中的三元运算符使用说明
php文件如何怎么打开方式介绍 php文件用什么打开方法
PHP怎么插入数据库方法步骤 php编程怎么导入数据库教程
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
PHP 获取远程文件大小的3种解决方法 如何用PHP获取远程大文件的大小
20个实用PHP实例代码 php接口开发实例代码详细介绍
如何架设PHP服务器方法步骤 怎么搭建php服务器简单教程