文档章节

压缩图片类库

 金于虎
发布于 2016/11/18 17:29
字数 390
阅读 4
收藏 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
曲靖
iOS安装包瘦身指南

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

秦无炎
2016/11/03
318
0
短视频从无到有 (九)图片合成视频及图片压缩

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

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

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

红薯
2009/02/18
78.5K
2
ASZip0.2版本解决中文文件名乱码问题

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

Enjoy前端开发
2013/09/09
0
0
Android性能优化之图片优化

图片的加载和显示是每个APP都避免不了的问题,再了解Android中如何图片优化之前,先看一下Android系统支持的图片格式。 1. 图片的格式 目前移动端Android平台原生支持的图片格式主要有:JPE...

sinat_36668731
2017/08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
13分钟前
1
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
21分钟前
0
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
30分钟前
15
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
57分钟前
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部