前台php代码

  1. <?php
  2. require_once 'img_thumb.class.php';
  3. $image = new ImgLib();
  4.  
  5. //源图路径
  6. $src_path='E:/wamp/www/Demo/IMG/01.jpg';
  7. //把新图片的名称返回浏览器
  8. echo $image->thumb($src_path,300,300);
  9.  
  10. ?>

后台php代码

  1. <?php
  2.  
  3. class ImgLib{
  4.  
  5. private $error;
  6. public function getError(){
  7.  
  8. return $this->error;
  9. }
  10. /**
  11. *
  12. * 制作缩略图
  13. * @param $src_path string 原图路径
  14. * @param $max_w int 画布的宽度
  15. * @param $max_h int 画布的高度
  16. * @param $flag bool 是否是等比缩略图 默认为false
  17. * @param $prefix string 缩略图的前缀 默认为'sm_'
  18. *
  19. */
  20. public function thumb($src_path,$max_w,$max_h,$prefix = 'sm_',$flag = true){
  21.  
  22. //获取文件的后缀
  23. $ext= strtolower(strrchr($src_path,'.'));
  24.  
  25. //判断文件格式
  26. switch($ext){
  27. case '.jpg':
  28. $type='jpeg';
  29. break;
  30. case '.gif':
  31. $type='gif';
  32. break;
  33. case '.png':
  34. $type='png';
  35. break;
  36. default:
  37. $this->error='文件格式不正确';
  38. return false;
  39. }
  40.  
  41. //拼接打开图片的函数
  42. $open_fn = 'imagecreatefrom'.$type;
  43. //打开源图
  44. $src = $open_fn($src_path);
  45. //创建目标图
  46. $dst = imagecreatetruecolor($max_w,$max_h);
  47.  
  48. //源图的宽
  49. $src_w = imagesx($src);
  50. //源图的高
  51. $src_h = imagesy($src);
  52.  
  53. //是否等比缩放
  54. if ($flag) { //等比
  55.  
  56. //求目标图片的宽高
  57. if ($max_w/$max_h < $src_w/$src_h) {
  58.  
  59. //横屏图片以宽为标准
  60. $dst_w = $max_w;
  61. $dst_h = $max_w * $src_h/$src_w;
  62. }else{
  63.  
  64. //竖屏图片以高为标准
  65. $dst_h = $max_h;
  66. $dst_w = $max_h * $src_w/$src_h;
  67. }
  68. //在目标图上显示的位置
  69. $dst_x=(int)(($max_w-$dst_w)/2);
  70. $dst_y=(int)(($max_h-$dst_h)/2);
  71. }else{ //不等比
  72.  
  73. $dst_x=0;
  74. $dst_y=0;
  75. $dst_w=$max_w;
  76. $dst_h=$max_h;
  77. }
  78.  
  79. //生成缩略图
  80. imagecopyresampled($dst,$src,$dst_x,$dst_y,0,0,$dst_w,$dst_h,$src_w,$src_h);
  81.  
  82. //文件名
  83. $filename = basename($src_path);
  84. //文件夹名
  85. $foldername=substr(dirname($src_path),0);
  86. //缩略图存放路径
  87. $thumb_path = $foldername.'/'.$prefix.$filename;
  88.  
  89. //把缩略图上传到指定的文件夹
  90. imagepng($dst,$thumb_path);
  91. //销毁图片资源
  92. imagedestroy($dst);
  93. imagedestroy($src);
  94.  
  95. //返回新的缩略图的文件名
  96. return $prefix.$filename;
  97. }
  98.  
  99. }
  100.  
  101. ?>

结果:

浏览器:

文件夹:

PHP生成缩略图(3)--封装类的更多相关文章

  1. 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  2. C# webform上传图片并生成缩略图

    其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...

  3. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

  4. ngx_image_thumb模块生成缩略图

    ngx_image_thumb是nginx中用来生成缩略图的模块. 编译前确定已经安装了libcurl-dev libgd2-dev libpcre-dev gd-devel pcre-devel l ...

  5. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  6. .net又一个生成缩略图的方法,不变形

    生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 /// <summary> /// 为图片生成缩略图 by 何问起 /// ...

  7. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  8. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  9. 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条

    不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...

随机推荐

  1. 面对对象编程(OOP, Object Oriented Programming)及其三个基本特性

    一千个读者,一千个哈姆雷特.对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 . 面向对象编程(OOP, O ...

  2. NLP1 —— Python自然语言处理环境搭建

    最近开始研究自然语言处理了,所以准备好好学习一下,就跟着<Python自然语言处理>这本书,边学边整理吧 安装 Mac里面自带了python2.7,所以直接安装nltk就可以了. 默认执行 ...

  3. 再看javascript执行上下文、变量对象

    突然看到一篇远在2010年的老文,作者以章节的形式向我们介绍了ECMA-262-3的部分内容,主要涉及到执行上下文.变量对象.作用域.this等语言细节.内容短小而精悍,文风直白而严谨,读完有酣畅淋漓 ...

  4. class字节码结构(零:补充:class结构,常量池,字节码指令)

    JVM高级特性与实践(五):实例探究Class类文件 及 常量池 JVM高级特性与实践(六):Class类文件的结构(访问标志,索引.字段表.方法表.属性表集合) JVM高级特性与实践(七):九大类字 ...

  5. POJ 1015

    #include<iostream> #include<algorithm> #define MAXN 201 #define count C_ount using names ...

  6. 原生Js弹窗插件|web弹出层组件|对话框

    wcPop.js 是一款基于原生javascript开发的前端 web版 弹窗组件,遵循原生 H5/css3/JS 的书写规范,简单实用.拿来即用(压缩后仅10KB).已经兼容各大主流浏览器.内含多种 ...

  7. h5在线1v1客服|web在线客服系统|h5即时聊天

    网上有很多环信.美恰之类的客服系统,最近也使用h5+css3+fontJs+swiper+wcPop等技术架构开发了一个在线客服(1v1沟通聊天),可以应用到在线临时聊天.在线咨询等情景.实现了消息. ...

  8. zabbix 自定义 key (转)

    转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/ ...

  9. 简单shell expect程序

    1 expect程序 用的Ubuntu,本身没带expect,安装. sudo apt-get install expect (关于expect,参见http://www.tclchina.com/a ...

  10. CS231n学习笔记-图像分类笔记(下篇)

    原文地址:智能单元 K-Nearest Neighbor分类器 大家可能注意到了,为什么只用最相似的一张图片的标签来作为测试图像的标签呢?这不是很奇怪吗!是的,使用K-Nearest Neighbor ...