文档章节

压缩图片类库

 金于虎
发布于 2016/11/18 17:29
字数 390
阅读 5
收藏 0
<?php 
class RarImg{


/**
 * king 2016/11/18
 * [getNewSize 获取最终压缩尺寸]
 * @param  [type] $maxWidth  [目标宽度]
 * @param  [type] $maxHeight [目标高度]
 * @param  [type] $srcWith   [原始图片长度]
 * @param  [type] $srcHeight [原始图片宽度]
 * @return [array]            [返回目标高度和宽度]
 */
	public function getNewSize($maxWidth,$maxHeight,$srcWith,$srcHeight){


		if($maxWidth>$srcWith){

			$maxWidth=$maxWidth;

			if($srcHeight>$maxHeight){

				$maxHeight=($srcHeight/$maxHeight)*$maxWidth;
			}else{

				$maxHeight=$srcHeight;
			}

			return array('width'=>$maxWidth,'height'=>$maxHeight);
		}

		if($maxHeight>$srcHeight){


			$maxHeight=$maxHeight;

			if($srcWith>$maxWidth){

				$maxWidth=($srcWith/$maxWidth)*$maxHeight;
			}else{

				$maxWidth=$srcWith;
			}

			return array('width'=>$maxWidth,'height'=>$maxHeight);
		}


			return array('width'=>$maxWidth,'height'=>$maxHeight);

}

/**
 * [makeThumb 压缩图片函数]
 * @param  [type] $srcFile   [原始图片路径]
 * @param  [type] $dstFile   [目标图片路径]
 * @param  [type] $maxWidth  [压缩后的宽度]
 * @param  [type] $maxHeight [压缩后的高度]
 * @return [type]            [description]
 */

public function makeThumb($srcFile,$dstFile,$maxWidth,$maxHeight){


 //原始图片尺寸和类型
			if($size=getimagesize($srcFile)){


				$srcWith=$size[0];
				$srcHeight=$size[1];
				$mime=$size['mime'];
				switch ($mime) {
					  case 'image/jpeg':
						$isJpeg=true;
						break;
						case 'image/gif':
						$isGif=true;
						break;
						case 'image/png':
						$isPng=true;
						break;
				    	default:
						return false;
						break;
				}





			$arr=$this->getNewSize($maxWidth,$maxHeight,$srcWith,$srcHeight);
			$thumbWidth=$arr['width'];
			$thumbHeight=$arr['height'];

		

			if(isset($isJpeg)&&$isJpeg){


				$dstThumPic=imagecreatetruecolor($thumbWidth,$thumbHeight);
				$srcPic=imagecreatefromjpeg($srcFile);
				imagecopyresampled($dstThumPic, $srcPic, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcHeight, $srcHeight);

				imagejpeg($dstThumPic,$dstFile,100);

				imagedestroy($dstThumPic);
				imagedestroy($srcPic);

				return true;

			}elseif(isset($isGif)&&$isGif){
				$dstThumPic=imagecreatetruecolor($thumbWidth,$thumbHeight);
				$srcPic=imagecreatefromgif($srcFile);

				//创建透明画布
				imagealphablending($dstThumPic, true);
				imagesavealpha($dstThumPic, true);
				$trans_color=imagecolorallocatealpha($dstThumPic, 0, 0, 0, 127);
				imagefill($dstThumPic, 0, 0, $trans_color);
				imagecopyresampled($dstThumPic, $srcPic, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcHeight, $srcHeight);

				imagegif($dstThumPic,$dstFile);

				imagedestroy($dstThumPic);
				imagedestroy($srcPic);

				return true;




			}elseif(isset($isPng)&&$isPng){

				$dstThumPic=imagecreatetruecolor($thumbWidth,$thumbHeight);
				$srcPic=imagecreatefrompng($srcFile);


				//创建透明画布
				imagealphablending($dstThumPic, true);
				imagesavealpha($dstThumPic, true);
				$trans_color=imagecolorallocatealpha($dstThumPic, 0, 0, 0, 127);
				imagefill($dstThumPic, 0, 0, $trans_color);
				imagecopyresampled($dstThumPic, $srcPic, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcHeight, $srcHeight);

				imagepng($dstThumPic,$dstFile);

				imagedestroy($dstThumPic);
				imagedestroy($srcPic);

				return true;



			}else{

				return false;
			}



		}else{


			return  false;
		}



	}




}


$obj=new RarImg();

$obj->makeThumb('2.png','4.png',100,100);


 ?>

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 105
码字总数 42695
作品 0
曲靖
私信 提问
Android性能优化——图片优化(二)

图片的加载和显示是每个商业APP都避免不了的问题,对于图片重度依赖类APP,例如壁纸类应用,图片社交类应用,对于图片的处理将会影响到整个APP的用户体验。 在正式了解Android中如何优化图片...

落地吃鸡
2017/04/21
0
0
iOS安装包瘦身指南

先看下Apple对安装包大小的限制: 资源优化 1.删除无用资源 解压ipa文件,检查是否有无用资源存在。 现在应该没有APP需要支持iPhone4以下的机型了,所以1X的图片可以全部删掉。3X的图片是保留...

秦无炎
2016/11/03
318
0
ASZip0.2版本解决中文文件名乱码问题

ASZip文件库是开源的AS3版–Zip压缩算法,具体示例应用可见http://code.google.com/p/aszip/。目前的最新版本是0.2版。最近在项目中需要用到该第三方类库来支持Flash对图片文件的批量打包上传...

Enjoy前端开发
2013/09/09
0
0
短视频从无到有 (九)图片合成视频及图片压缩

图片合成视频 其实,视频的画面就是一帧帧的图片,当帧率大于16也就是一秒钟有16张以上的图片时,人类的视觉就觉得它是连续的。所以,视频画面可以分解成图片,图片也可以合成视频画面。 AV...

卢叁
08/01
0
0
jQuery对话框插件--ThickBox

ThickBox是一个基于JQuery类库的扩展,它能在浏览器界面上显示非常棒的UI框, 它可以显示单图片,多图片,ajax请求内容或链接内容. ThickBox 是用超轻量级的 jQuery 库 编写的. 压缩过 jQue...

红薯
2009/02/18
78.5K
2

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 其实我在地板也睡不着

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @witt-z :分享歌词: 阴天 在不开灯的房间,当所有思绪都一点一点沉淀。 分享莫文蔚的单曲《阴天》: 《阴天》- 莫文蔚 手机党少年们想听歌,...

小小编辑
10分钟前
9
3
微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
3
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部