PHP制作缩略图

1、制作缩略图的函数

imagecopyresampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh)

说明:

dest 目标画布

src 原图(要缩略的图片)

dx,dy 目标画布上的一个点

sx,sy 原图上的一个点

dw,dh 画布的 宽高

sw,sh  原图的宽高

从src原图上以sx,sy为左上角,取宽为sw,高为sh的区域,放在dest画布上,以dx,dy为左上角,宽为dw,高为dh的区域。

2、制作的原理

生成缩略图,关键的是如何计算缩放比率。

1、画布的高/画布的宽>原图的高/原图的宽

也就是下图这种情况: 缩放比率 =  新图宽度 / 原图宽度 

2、原图的高/原图的宽>画布的高/画布的宽

也就是下图这种情况:缩放比率 =  新图高度 / 原图高度

3、具体代码

  1. function thumb($file,$dw,$dh,$path){//这四个参数分别是1、要缩略的图片,2、画布的宽(也就是你要缩略的宽)3、画布的高(也就是你要缩略的高),4、保存路径)
  2. //获取用户名图
  3. $srcImg=$this->getImg($file);//调用下面那个函数,实现根据图片类型来创建不同的图片画布
  4. //获取原图的宽高
  5. $infoSrc=getimagesize($file);//这个getimagesize()是php里面的系统函数用来获取图片的具体信息的
  6. $sw=$infoSrc[0];//获取要缩略图片的宽
  7. $sh=$infoSrc[1];。。获取要缩略的图片的高
  8. //创建缩略图画布
  9. $destImg=imagecreatetruecolor($dw, $dh);
  10. //为缩略图填充背景色
  11. $bg=imagecolorallocate($destImg,250,250,250);
  12. imagefill($destImg,0,0,$bg);
  13. //计算例缩放的尺寸
  14. if($dh/$dw>$sh/$sw){
  15. $fw=$dw;
  16. $fh=$sh/$sw*$fw;
  17. }else{
  18. $fh=$dh;
  19. $fw=$fh*$sw/$sh;
  20. }
  21. //居中放置
  22. $dx=($dw-$fw)/2;
  23. $dy=($dh-$fh)/2;
  24. //创建缩略图
  25. imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0 ,$fw, $fh,$sw, $sh);
  26. $baseName='thumb_'.basename($file);//给缩略的图片命名,basename()是系统内置函数用来获取后缀名的
  27. $savePath=$path.'/'.$baseName;//设置缩略图片保存路径
  28. imagejpeg($destImg,$savePath)//把缩略图存放到上一步设置的保存路径里
  29.  
  30. }
  31. function getImg($file){//这是以一个动态创建图片画布的函数(根据具体的图片类型创相应类型的画布)
  32. $info=getimagesize($file);
  33. $fn=$info['mime'];//获得图片类型;
  34. switch($fn){
  35. case 'image/jpeg'://如果类型是imag/jpeg就创建jpeg类型的画布
  36. $img=imagecreatefromjpeg($file);
  37. break;
  38. case 'image/gif':
  39. $img=imagecreatefromgif($file);//如果类型是gif就创建gif类型的画布
  40. case 'image/png':
  41. $img=imagecreatefrompng($file);//如果类型是png就创建png类型的画布
  42. break;
  43.  
  44. }
  45. return $img;//返回画布类型
  46. }

php制作缩略图的更多相关文章

  1. 制作缩略图java工具类

    import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.File ...

  2. [UE4]制作缩略图

    一.创建一个专门用来做缩略图的角色CameraCharacter,不需要实体模型. 二.Auto Possess Player设置为“Player 0” 三.重力比例改成0(这样在天上的时候就不会往下 ...

  3. django 上传图片、使用PIL制作缩略图并保存到sea的storage

    上传图片解析: SAE的设置指引如下: 处理用户上传文件 在setttings.py中添加以下配置. # 修改上传时文件在内存中可以存放的最大size为10m FILE_UPLOAD_MAX_MEMO ...

  4. 制作Html标签以及表单、表格内容

    制作Html一般用DW(......),Html全称为(Hyper Text Markup Language   超文本标记语言) 文本就是平常电脑上的文本文档,只能存储文字,而超文本文档可以存储音乐 ...

  5. 使用ThinkPHP实现生成缩略图及显示

    首先了解父类Image.class.php(ThinkPHP/Library/Think/Image.class.php)中的一些函数 1:open() 打开被处理的图片 2:thumb() 生成缩略 ...

  6. PHP生成缩略图(3)--封装类

    前台php代码 <?php require_once 'img_thumb.class.php'; $image = new ImgLib(); //源图路径 $src_path='E:/wam ...

  7. PHP根据图片制作缩略图

    php中制作缩略图的方法也很简单,是用imagecopyresampled方法根据源图制作一个小一点的图片,来看代码check_image_addthumbs.php <?php //修改图片效 ...

  8. VC++基于CXImage库实现缩略图

    一般的图像处理软件都对读入程序的图像文件建一个缩略图的列表,像ACDSee那样.笔者最近在做一个图像处理的项目,处理的原始数据就是图像文件.从项目一开始就想做一个缩略图,但一直苦于技术水平有限,且时间 ...

  9. php表单和缩略图处理类是什么样呢

    <?php//封装一个表单验证类//中文验证.邮箱验证.电话号码.手机.QQ.身份证.(由字母.数字.下划线组成,不能以数字开头)header('content-type:text/html;c ...

随机推荐

  1. 方差分析|残差|MSA/MSE|Completely randomized design|Randomized block design|LSD|主效应|intercept|多重比较|

    符合方差分析的三个条件: 残差=实际值-预测值(其实是均值). 在原假设下,MSA的期望会等于MSE的期望:在备选假设下,MSA的期望会大于MSE的期望,所以MSA/MSE的取值范围在(1,正无穷), ...

  2. python3下scrapy爬虫(第十一卷:scrapy数据存储进mongodb)

    说起python爬虫数据存储就不得不说到mongodb,现在我们来试一下scrapy操作mongodb 首先开启mongodb mongod --dbpath=D:\mongodb\db 开启服务后就 ...

  3. linux一些基本操作-防火墙操作

    防火墙操作 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status iptables:未运行防火墙. 开启防火墙: [root@c ...

  4. [LC] 225. Implement Stack using Queues

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...

  5. Qt LNK1158无法运行rc.exe解决办法

    找出电脑上的rc.exe ,发现在C:\Program Files (x86)\Windows Kits\10\bin\10.0.xxxx.0\x86 路径下. 找出电脑上的rc.exe ,发现在C: ...

  6. JavaScript学习总结(六)数据类型和JSON格式

    转自:http://segmentfault.com/a/1190000000668072 什么是JSON JSON:JavaScript 对象表示法(JavaScript Object Notati ...

  7. proxmox新版本使用了lxc容器,导致以前的vzlist命令无法使用,于是自己写了一个脚本来获取所有半虚拟化主机的信息状态

    #!/usr/bin/env python #encoding:utf-8 # desc:用来描述各个主机信息 import os #CTID NPROC STATUS IP_ADDR HOSTNAM ...

  8. 吴裕雄--天生自然python学习笔记:Python CGI编程

    什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...

  9. 关于Git的版本控制

    1.关于版本控制? 版本控制是一种记录文件或文件集随时间变化的系统,以便您以后可以调用特定版本,如果您是图形或Web设计人员并希望保留图像或布局的每个版本(您肯定希望这样),则使用版本控制系统(VCS ...

  10. Linux用户与用户组的关系

    一.用户和用户组文件 1. /etc/passwd:所创建的用户账号和信息均存放在次文件中,所有用户可读取: 最后一个字段的值一般为/sbin/nologin,表示该账号不能用来登陆linux系统: ...