您当前的位置: 首页 > 网站编程 > PHP教程 > PHP的一个完美GIF等比缩放类,附带去除缩放黑背景

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

作者:不详 来源:网络 发布时间: 2014-08-01 23:50 点击:
我这里没有判断文件类型,因为png和jpeg缩放后都不会出现黑色背景,就单独gif不行..查了下资料发现了一个完美的解决办法,附带有详解 现在写东西都喜欢封装成类.....大家调用一下就行了..我就不说怎么调用了 代码如下:?php class resize_image{ private $o_img_width;//原

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

  我这里没有判断文件类型,因为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的一个完美GIF等比缩放类,附带去除缩放黑背景"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4