基于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 相关文章推荐
第二节--PHP5 的对象模型
Nov 16 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
linux下编译安装memcached服务
Aug 03 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
基于PHP实现发微博动态代码实例
Dec 11 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
图书管理程序(一)
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
Javascript函数的参数
2015/07/16 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
JSONP跨域请求
2017/03/02 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
python skimage 连通性区域检测方法
2018/06/21 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
python中类与对象之间的关系详解
2020/12/16 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
小浪底导游词
2015/02/12 职场文书
全民创业工作总结
2015/08/13 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
java调用Restful接口的三种方法
2021/08/23 Java/Android