基于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 相关文章推荐
php 日期时间处理函数小结
Dec 18 PHP
php数组去除空值函数分享
Feb 02 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
php中各种定义变量的方法小结
Oct 18 PHP
实例解析php的数据类型
Oct 24 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
PHP中的异常处理机制深入讲解
Nov 10 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
CI框架中zip类应用示例
2014/06/17 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
js如何打印object对象
2015/10/16 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
法人授权委托书格式
2014/04/08 职场文书
机关搬迁方案
2014/05/18 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL