基于GD2图形库的PHP生成图片缩略图类代码分享


Posted in PHP onFebruary 08, 2015

要使用PHP生成图片缩略图,要保证你的PHP服务器安装了GD2图形库 使用一个类生成图片的缩略图

1.使用方法

$resizeimage = new resizeimage("图片源文件地址", "200", "100", "0","缩略图地址");
//就只用上面的一句话,就能生成缩略图,其中,源文件和缩略图地址可以相同,200,100分别代表宽和高

2. 缩略图类代码

//使用如下类就可以生成图片缩略图,
 
<?php
class resizeimage
{
  //图片类型
  var $type;
  //实际宽度
  var $width;
  //实际高度
  var $height;
  //改变后的宽度
  var $resize_width;
  //改变后的高度
  var $resize_height;
  //是否裁图
  var $cut;
  //源图象
  var $srcimg;
  //目标图象地址
  var $dstimg;
  //临时创建的图象
  var $im;
 
  function resizeimage($img, $wid, $hei,$c,$dstpath)
  {
    $this->srcimg = $img;
    $this->resize_width = $wid;
    $this->resize_height = $hei;
    $this->cut = $c;
    //图片的类型
  
$this->type = strtolower(substr(strrchr($this->srcimg,"."),1));
 
    //初始化图象
    $this->initi_img();
    //目标图象地址
    $this -> dst_img($dstpath);
    //--
    $this->width = imagesx($this->im);
    $this->height = imagesy($this->im);
    //生成图象
    $this->newimg();
    ImageDestroy ($this->im);
  }
  function newimg()
  {
    //改变后的图象的比例
    $resize_ratio = ($this->resize_width)/($this->resize_height);
    //实际图象的比例
    $ratio = ($this->width)/($this->height);
    if(($this->cut)=="1")
    //裁图
    {
      if($ratio>=$resize_ratio)
      //高度优先
      {
        $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
        ImageJpeg ($newimg,$this->dstimg);
      }
      if($ratio<$resize_ratio)
      //宽度优先
      {
        $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));
        ImageJpeg ($newimg,$this->dstimg);
      }
    }
    else
    //不裁图
    {
      if($ratio>=$resize_ratio)
      {
        $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);
        ImageJpeg ($newimg,$this->dstimg);
      }
      if($ratio<$resize_ratio)
      {
        $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
        imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);
        ImageJpeg ($newimg,$this->dstimg);
      }
    }
  }
  //初始化图象
  function initi_img()
  {
    if($this->type=="jpg")
    {
      $this->im = imagecreatefromjpeg($this->srcimg);
    }
    if($this->type=="gif")
    {
      $this->im = imagecreatefromgif($this->srcimg);
    }
    if($this->type=="png")
    {
      $this->im = imagecreatefrompng($this->srcimg);
    }
  }
  //图象目标地址
  function dst_img($dstpath)
  {
    $full_length = strlen($this->srcimg);
 
    $type_length = strlen($this->type);
    $name_length = $full_length-$type_length;
 
 
    $name     = substr($this->srcimg,0,$name_length-1);
    $this->dstimg = $dstpath;
 
 
//echo $this->dstimg;
  }
}
?>
PHP 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
php 静态变量的初始化
Nov 15 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
php画图实例
Nov 05 PHP
php检测文本的编码
Jul 26 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP中cookie知识点学习
May 06 PHP
php实现文章评论系统
Feb 18 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
php中get_object_vars()方法用法实例
Feb 08 #PHP
php面向对象中static静态属性与方法的内存位置分析
Feb 08 #PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 #PHP
php延迟静态绑定实例分析
Feb 08 #PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 #PHP
PHP处理大量表单字段的便捷方法
Feb 07 #PHP
PHP生成压缩文件实例
Feb 07 #PHP
You might like
jQuery 源码分析笔记
2011/05/25 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
Js中sort()方法的用法
2006/11/04 Javascript
JavaScript Array扩展实现代码
2009/10/14 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
解决Python安装cryptography报错问题
2020/09/03 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
Java面试题汇总
2015/12/06 面试题
基层组织建设年活动总结
2015/05/09 职场文书
个人向公司借款协议书
2016/03/19 职场文书
如何在C++中调用Python
2021/05/21 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python