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


Posted in PHP onApril 01, 2014

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

<?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 高效率写法 推荐
Feb 21 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
PHP的几个常用加密函数
Feb 03 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
php常用日期时间函数实例小结
Jul 04 PHP
PHP把网页保存为word文件的三种方法
Apr 01 #PHP
php时间戳转换的示例
Mar 31 #PHP
php使用curl存储cookie的示例
Mar 31 #PHP
php过滤敏感词的示例
Mar 31 #PHP
php根据年月获取季度的方法
Mar 31 #PHP
PHP调用VC编写的COM组件实例
Mar 29 #PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 #PHP
You might like
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
babel基本使用详解
2017/02/17 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
Python实现子类调用父类的方法
2014/11/10 Python
python实现名片管理系统
2018/11/29 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
目标管理责任书
2014/04/15 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
钱学森观后感
2015/06/04 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书