上海网站建设 网络推广,网站方案建设书模板,网站怎么不要钱自己做,微信开发小程序开发工具下载?php namespace app\lib;
/** * 图片压缩类#xff1a;通过缩放来压缩。 * 如果要保持源图比例#xff0c;把参数$percent保持为1即可。 * 即使原比例压缩#xff0c;也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例#xff0c;则体积会更小。…?php namespace app\lib;
/** * 图片压缩类通过缩放来压缩。 * 如果要保持源图比例把参数$percent保持为1即可。 * 即使原比例压缩也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例则体积会更小。 * 结果可保存、可直接显示。 */ class ImageCompress { private $src; private $image; private $imageinfo; private $percent 0.5; /** * 图片压缩 * * param $src 源图 * param float $percent 压缩比例 * */ public function __construct($src, $percent 1) { $this-src $src; $this-percent $percent; } /** * 高清压缩图片 * * param string $saveName * 提供图片名可不带扩展名用源图扩展名用于保存。或不提供文件名直接显示 */ public function compressImg($saveName ) { $this-_openImage(); if (! empty($saveName)) $this-_saveImage($saveName); // 保存 else $this-_showImage(); } /** * 内部打开图片 */ private function _openImage() { list ($width, $height, $type, $attr) getimagesize($this-src); $this-imageinfo array( width $width, height $height, type image_type_to_extension($type, false), attr $attr ); $fun imagecreatefrom . $this-imageinfo[type]; $this-image $fun($this-src); $this-_thumpImage(); } /** * 内部操作图片 */ private function _thumpImage() { $new_width $this-imageinfo[width] * $this-percent; $new_height $this-imageinfo[height] * $this-percent; $image_thump imagecreatetruecolor($new_width, $new_height); // 将原图复制到图片载体上面并且按照一定比例压缩,极大的保持了清晰度 imagecopyresampled($image_thump, $this-image, 0, 0, 0, 0, $new_width, $new_height, $this-imageinfo[width], $this-imageinfo[height]); imagedestroy($this-image); $this-image $image_thump; } /** * 输出图片:保存图片则用saveImage() */ private function _showImage() { header(Content-Type: image/ . $this-imageinfo[type]); $funcs image . $this-imageinfo[type]; $funcs($this-image); } /** * 保存图片到硬盘 * * param string $dstImgName * 1、可指定字符串不带后缀的名称使用源图扩展名 。2、直接指定目标图片名带扩展名。 */ private function _saveImage($dstImgName) { if (empty($dstImgName)) return false; $allowImgs [ .jpg, .jpeg, .png, .bmp, .wbmp, .gif ]; // 如果目标图片名有后缀就用目标图片扩展名 后缀如果没有则用源图的扩展名 $dstExt strrchr($dstImgName, .); $sourseExt strrchr($this-src, .); if (! empty($dstExt)) $dstExt strtolower($dstExt); if (! empty($sourseExt)) $sourseExt strtolower($sourseExt); // 有指定目标名扩展名 if (! empty($dstExt) in_array($dstExt, $allowImgs)) { $dstName $dstImgName; } elseif (! empty($sourseExt) in_array($sourseExt, $allowImgs)) { $dstName $dstImgName . $sourseExt; } else { $dstName $dstImgName . $this-imageinfo[type]; } $funcs image . $this-imageinfo[type]; $funcs($this-image, $dstName); } /** * 销毁图片 */ public function __destruct() { imagedestroy($this-image); } }
//应用举例 // public function condense_img($source) // { // $path uploads/jd_big_img/.date(Ymd); // if(!file_exists($path)){ // mkdir($path,0777,true); // } // $image_name md5(time().$source); // $dst_img $path./.$image_name..jpg; // $percent 1; #原图压缩不缩放但体积大大降低 // $image (new Compress($source,$percent))-compressImg($dst_img); // return $dst_img; // } //绝对路径 $filePath str_replace(\\, /, get_local_upload_url().$savename); $allowImgs [jpg,jpeg,png,bmp,wbmp,gif]; if($file-getSize() 1024 in_array($ext, $allowImgs)){ (new ImageCompress($filePath,0.8))-compressImg($filePath); }