基于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正则走开
Mar 15 PHP
php miniBB中文乱码问题解决方法
Nov 25 PHP
php学习笔记 数组的常用函数
Jun 13 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
smarty获得当前url的方法分享
Feb 14 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
解决laravel session失效的问题
Oct 14 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
长波知识介绍
2021/03/01 无线电
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
5种Python单例模式的实现方式
2016/01/14 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
详解python:time模块用法
2019/03/25 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
会计求职信
2014/05/29 职场文书
法语专业求职信
2014/07/20 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
公司门卫岗位职责
2015/04/13 职场文书
降价通知函
2015/04/23 职场文书
教师外出学习心得体会
2016/01/18 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android