文档章节

PHP缩略图类

辇道增七
 辇道增七
发布于 2015/10/12 17:17
字数 528
阅读 116
收藏 4

码上生花,ECharts 作品展示赛正式启动!>>>

<?php
//缩略图类
class Thumb{
	public static $thumb_prefix = '';//缩略图前缀
	public static $thumb_savePath = '';//缩略图保存路径
	public static $thumb_width = '';//缩略图宽度
	public static $thumb_height = '';//缩略图高度
	
	public static function save($sPath){//保存为缩略图,传入一个实参
		$imgArr = self::getImageInfo($sPath);//获取图片信息
		if (is_array($imgArr)) {
			//将三个静态属性以逗号为分隔拆分为数组,实现多张缩略图的生成
			$thumb_prefix_arr = explode(',', self::$thumb_prefix);
			$thumb_width_arr = explode(',', self::$thumb_width);
			$thumb_height_arr = explode(',', self::$thumb_height);
			$countP = count($thumb_prefix_arr);
			$countW = count($thumb_width_arr);
			$countH = count($thumb_height_arr);
			if ($countP>0 && $countP==$countW && $countW==$countH) {
				//遍历一个数组,生成多张缩略图
				$reArr = array();
				foreach ($thumb_prefix_arr as $key=>$value){
					//生成空白画布并填充颜色
					$image = imagecreatetruecolor($thumb_width_arr[$key], $thumb_height_arr[$key]);
					$color = imagecolorallocate($image, 255, 255, 255);//白色
					imagefill($image, 0, 0, $color);
					//计算出缩略比例
					$width_scale = $imgArr['width']/$thumb_width_arr[$key];//宽比
					$height_scale = $imgArr["height"]/$thumb_height_arr[$key];//高比
					$scale = $width_scale>$height_scale ? $width_scale : $height_scale;
					//计算缩略图宽高
					$width = $imgArr["width"]/$scale;
					$height = $imgArr["height"]/$scale;
					//到目标图片的位置
					$dst_x = ($thumb_width_arr[$key]-$width)/2;
					$dst_y = ($thumb_height_arr[$key]-$height)/2;
					//获取原始图片资源并拷贝
					$src_image = $imgArr["createFunName"]($sPath);//获取原始图片资源
					imagecopyresized($image, $src_image, $dst_x, $dst_y, 0, 0, $width, $height, $imgArr["width"], $imgArr["height"]);
					//保存并返回值
					$re = $imgArr['saveFunName']($image,self::$thumb_savePath.'/'.$thumb_prefix_arr[$key].$imgArr['name']);
					$reArr[$key] = $re;
				}
				//销毁缩略图资源及原图片资源,释放内存
				imagedestroy($image);
				imagedestroy($src_image);
				return $reArr;//返回数组
			}else{
				return false;
			}
		}else{
			return false;
		}
	}
	
	protected static function getImageInfo($path){
		if (is_file($path)) {
			$imgArr = getimagesize($path);
			if (is_array($imgArr)) {//如果$imgArr是一个数组,则说明$path是一个真实图片
				//判断不同的图片类型,使用变量函数,生成图片资源:$createFunName,保存图片资源:$saveFunName
				switch ($imgArr['mime']){
					case 'image/jpeg':
					case 'image/pjpeg':
						$createFunName = 'imagecreatefromjpeg';
						$saveFunName = 'imagejpeg';
						break;
					case 'image/png':
						$createFunName = 'imagecreatefrompng';
						$saveFunName = 'imagepng';
						break;
					case 'image/gif':
						$createFunName = 'imagecreatefromgif';
						$saveFunName = 'imagegif';
						break;
					default:
						return false;						
				}
				//获取原图片名称
				$oldName = pathinfo($path,PATHINFO_BASENAME);
				//返回图片信息数组
				return array(
						'name'=>$oldName,
						'type'=>$imgArr['mime'],
						'width'=>$imgArr[0],
						'height'=>$imgArr[1],
						'createFunName'=>$createFunName,
						'saveFunName'=>$saveFunName
				);
			}
		}else{
			return false;
		}
	}
}


© 著作权归作者所有

辇道增七
粉丝 0
博文 3
码字总数 1228
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
yii_1_1_17_12(上传类与如何扩展第三方类与缩略图类的使用-2016-2-12)

一些表单验证的规则 array('title','required','message'=>'标题必填'),array('type','in','range'=>array(0,1),'message'=>'请选择类型'),//范围array('cid','自定义函数'),array('thu...

wsy940822
2016/02/12
70
0
PHP 缩放图片

对于网站前端上传的图片,在后台处理时有必要对其进行缩放以生成大小统一的缩略图。在PHP中,可以很方便的使用GD库来完成这一任务。下面的CImage类的静态方法CreateThumbnail()函数可以接受原...

长平狐
2012/12/10
43
0
PHP 缩放图片

对于网站前端上传的图片,在后台处理时有必要对其进行缩放以生成大小统一的缩略图。在PHP中,可以很方便的使用GD库来完成这一任务。下面的CImage类的静态方法CreateThumbnail()函数可以接受原...

彭博
2012/04/12
1.8K
1
PHP 图片缩略图库--PHPThumb

PHP Thumb 是一个 PHP 的类用来生成图片的缩略图。 只需数行代码即可,支持多种图片来源,包括文件系统或者数据库,支持大多数图片格式。并可对图片进行旋转、剪切、加水印等等。可执行定义缩...

匿名
2011/06/09
1.2W
0
PHP-生成缩略图和添加水印图-学习笔记

1.开始 在网站上传图片过程,经常用到缩略图功能。这里我自己写了一个图片处理的Image类,能生成缩略图,并且可以添加水印图。 2.如何生成缩略图 生成缩略图,关键的是如何计算缩放比率。 这...

ok_008
2017/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

某二手交易平台大数据平台从 0 到 1 演进与实践

在人口流量红利不再,获客成本越来越高的时代,精益创业、MVP 的概念已经深入人心,精细化运营也是大势所趋,而这些背后本质上都依赖数据化运营,那如何根据现有业务,快速从 0 开始打造一个...

osc_lc4icfkt
4分钟前
0
0
阿里云新品发布会周刊第56期 丨 如何用云服务占据全球化先机,让产品服务触达全球用户?

点击订阅新品发布会! 新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多内容,了解更多 新品发布会专属福利 1、 全球加速GA产品免费试用:加速任意跨地域公网服务...

osc_2y1ylz6c
5分钟前
0
0
OSI七层模型和TCP/IP五层(四层)模型的概念

OSI七层模型 概念:OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。 第一层:物理层 功能:以“0”、“1”代表电压的...

osc_fhw23e9z
6分钟前
0
0
手把手教你使用Python抓取QQ音乐数据(第三弹)

【一、项目目标】 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 通过手把手教你使用Python抓取QQ音乐...

osc_pl358sty
7分钟前
0
0
Knative Eventing 0.1.15 版本变更

前言 Knative Eventing 0.1.15 版本在5月27日已经发布,来看看它的变化。 注意 需要使用迁移工具把存储版本由v1alpha1 更新为 v1beta1,如果使用了Broker.Spec.ChannelTemplateSpec,需要在升...

osc_1zoujv1s
8分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部