PHP的一个完美GIF等比缩放类,附带去除缩放黑背景

2015-01-24信息快讯网

我这里没有判断文件类型,因为png和jpeg缩放后都不会出现黑色背景,就单独gif不行..查了下资料发现了一个完美的解决办法,附带有详解

现在写东西都喜欢封装成类.....大家调用一下就行了..我就不说怎么调用了

<?php
class resize_image{
   private $o_img_width;//原图像宽度
   private $o_img_height;//原图像高度
   private $n_img_width;//新图像宽度
   private $n_img_height;//新图像高度
   private $o_img_file;//原图像文件
   private $o_img_source;//原图像资源
   private $n_img_file;//新图像资源
   private $n_img_source;//新图像资源
   private $o_to_n_per=0.5;//图像缩放比

//初始化内部变量 function __construct($oldfile,$newfile){ list($width,$height)=getimagesize($oldfile); $this->o_img_file=$oldfile; $this->o_img_width=$width; $this->o_img_height=$height; $this->n_img_file=$newfile; }

//等比例缩放并且解决GIF透明色为黑色背景的问题 function get_resize_scaling_img(){ $this->n_img_width=$this->o_img_width*$this->o_to_n_per; $this->n_img_height=$this->o_img_height*$this->o_to_n_per; //等比例缩放图片(算法) if ( $this->n_img_width && ( $this->o_img_width <$this->o_img_height)) { $this->n_img_width = ( $this->n_img_height/$this->o_img_height) * $this->o_img_width; } else { $this->n_img_height = ($this->n_img_width / $this->o_img_width) * $this->o_img_height; } $this->o_img_source=imagecreatefromgif($this->o_img_file); //创建一个等比例缩放大小的画布 $this->n_img_source=imagecreatetruecolor($this->o_img_width,$this->n_img_height);

//美化:去除黑色不透明背景 $trans_init=imagecolortransparent($this->o_img_source); //寻找透明色并且判断是否在总颜色中 if($trans_init>=0 && $trans_init < imagecolorstotal($this->o_img_source)){ //如果在的话则搜索这个颜色的RGB色相 $trans_index=imagecolorsforindex($this->o_img_source,$trans_init); //找到之后就创建这样一个颜色 $trans_new=imagecolorallocate($this->n_img_source,$trans_index["red"],$trans_index["green"],$trans_index["blue"]); //然后我们用这个颜色去填充新的图像 imagefill($this->n_img_source,0,0,$trans_new); //然后我们在把填充色设置为透明 imagecolortransparent($this->n_img_source,$trans_new); } //拷贝原图像到新画板上 imagecopyresized($this->n_img_source,$this->o_img_source,0,0,0,0,$this->n_img_width,$this->n_img_height,$this->o_img_width,$this->o_img_height); return $this->n_img_source; } //最终销毁资源 function __destruct(){ imagedestroy($this->o_img_source); imagedestroy($this->n_img_source); }

}


说明:因为先前没想那么多所以声明了很多私有的内部变量以便调用...程序看起来很笨拙啊......

一个图片地址分解程序(用于PHP小偷程序)
又一个PHP实现的冒泡排序算法分享
PHP中读取照片exif信息的方法
PHP获取一个字符串中间一部分字符的方法
php实现的DateDiff和DateAdd时间函数代码分享
php中将一段数据存到一个txt文件中并显示其内容
PHP中设置一个严格30分钟过期Session面试题的4种答案
PHP exif扩展方法开启详解
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
PHP实现显示照片exif信息的方法
php判断GIF图片是否为动画的方法
PHP实现生成透明背景的PNG缩略图函数分享
PHP使用GIFEncoder类处理gif图片实例
PHP使用GIFEncoder类生成gif动态滚动字幕
PHP使用GIFEncoder类生成的GIF动态图片验证码
PHP根据传来的16进制颜色代码自动改变背景颜色
PHP图片等比例缩放生成缩略图函数分享
php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
php验证是否是md5编码的简单代码
PHP把网页保存为word文件的三种方法
一个显示效果非常不错的PHP错误、异常处理类
一个PHP针对数字的加密解密类
递归删除一个节点以及该节点下的所有节点示例
php多功能图片处理类分享(php图片缩放类)
使用PHP导出Redis数据到另一个Redis中的代码
php判断字符串在另一个字符串位置的方法
php图片缩放实现方法
PHP上传图片进行等比缩放可增加水印功能
php实现图片缩放功能类
php调整gif动画图片尺寸示例代码分享
PHP生成Gif图片验证码
PHP关于IE下的iframe跨域导致session丢失问题解决方法
完美解决PHP中的Cannot modify header information 问题
php加水印的代码(支持半透明透明打水印,支持png透明背景)
©2014-2024 dbsqp.com