文档章节

压缩图片类库

 金于虎
发布于 2016/11/18 17:29
字数 390
阅读 6
收藏 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
博文 112
码字总数 46834
作品 0
曲靖
私信 提问
Android性能优化——图片优化(二)

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

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

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

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

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

卢叁
2018/08/01
0
0
ASZip0.2版本解决中文文件名乱码问题

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

Enjoy前端开发
2013/09/09
0
0
品互网络/ueditor-with-spring

UEditor with spring项目介绍 UEditor官方只提供jsp版本的上传实现,功能比较简单,不太适合流行的ssh架构类的项目。 所以本项目使用spring来实现了相关服务器端功能,并扩展了一些功能,如大...

品互网络
2016/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部