深入探讨PHP生成缩略图的实现方法
创始人
2024-06-14 05:10:37
0

我们在运用PHP语言进行实际代码编写的时候,遇到一个新的需求,通常都会通过自己不断积累的经验来解决这以需求的实现。下面我们为了增加大家的编码经验,特地介绍了一下有关PHP生成缩略图的相关方法。#t#

PHP生成缩略图HTML代码

 

  1. < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
  2. < HTML> 
  3. < HEAD> 
  4. < TITLE> 上传图片 < /TITLE> 
  5. < META NAME="Generator" CONTENT="EditPlus"> 
  6. < META NAME="Author" CONTENT=""> 
  7. < META NAME="Keywords" CONTENT=""> 
  8. < META NAME="Description" CONTENT=""> 
  9. < meta http-equiv="Content-Type" content="text/html; charset=gbk" /> 
  10. < /HEAD> 
  11.  
  12. < BODY> 
  13. < FORM METHOD="POST" ACTION="tu.php?act=upload" enctype="multipart/form-data" > 
  14. < p>< INPUT TYPE="file" NAME="file"/>< /p> 
  15. < p>< INPUT TYPE="submit" value="hao"/>  < INPUT TYPE="reset"/>< /p> 
  16. < /FORM> 
  17. < /BODY> 
  18. < /HTML> 

 


PHP生成缩略图PHP代码

 

  1. < ?php  
  2. /*后台登陆界面  
  3. *黄春龙学习编写  
  4. *首写时间:2009-10-27  
  5. *更新时间:2009/11/24  
  6. */  
  7. require_once '../xmphp/init.php';
  8. //全站配置文件  
  9. require_once XMPHP_COMMON.'/smarty.php';
  10. //smarty功能  
  11. require_once XMPHP_COMMON.'/mysql.php';
  12. //mysql功能  
  13. require_once XMPHP_COMMON.'/func.php';
  14. //常用函数  
  15. if(isset($_GET['act'])&&$_GET['act']
    =='upload'){  
  16. $file=$_FILES['file'];  
  17. $info=pathinfo($file['name']);  
  18. $a=array('jpg','gif','png');  
  19. if(!in_array($info['extension'],$a)){  
  20. alert("请选择jpg,gif,png格式的图片
    进行上传");  
  21. exit;  
  22. }  
  23. if($file['name'] !=''){  
  24. $dirname=date('Ym');  
  25. $dirname='../upload/'.$dirname;
  26. //原图路径  
  27. $xin=$dirname.'/s';//PHP生成缩略图路径  
  28. if(!file_exists($xin)){  
  29. @mkdir($xin);  
  30. }  
  31. $image1=$info['filename'].'120_120'.'.'
    .$info['extension'];//缩略图名称  
  32. $image2=$info['filename'].'300_300'.'.'
    .$info['extension'];//缩略图名称  
  33. list($imagw,$imagh)=getimagesize($file
    ['tmp_name']);//取得原图的宽高(另外$file
    ['tmp_name']只是一个临时文件路径,有时可能
    会报错,如报错只需把临时文件路径改成你上传
    后的原图的路径即可)  
  34. //120图判断各种情况来取得缩略图的宽高  
  35. if($imagw< =120&&$imagh< =120){  
  36. $m120w=$imagw;  
  37. $m120h=$imagh;  
  38. }elseif($imagw>$imagh)  
  39. {  
  40. $m120w=120;  
  41. $m120h=intval($m120w/number_format(
    $imagw/$imagh,2));//缩略图的宽除以(原
    图的宽除以原图的高)number_format查手册  
  42. }  
  43. else  
  44. {  
  45. $m120h=300;  
  46. $m120w=intval($m120h/number_format(
    $imagh/$imagw,2));//缩略图的高除以(原图
    的高除以原图的宽)number_format查手册  
  47. }  
  48. //300图判断各种情况来取得缩略图的宽高  
  49. if($imagw< =300&&$imagh< =300){  
  50. $m300w=$imagw;  
  51. $m300h=$imagh;  
  52. }elseif($imagw>$imagh){  
  53. $m300w=300;  
  54. $m300h=intval($m300w/number_format(
    $imagw/$imagh,2));//缩略图的宽除以(原
    图的宽除以原图的高)number_format查手册  
  55. }else{  
  56. $m300h=300;  
  57. $m300w=intval($m300h/number_format(
    $imagh/$imagw,2));//缩略图的高除以(原
    图的高除以原图的宽)number_format查手册  
  58. }  
  59. if($info['extension']=='jpg'){  
  60. $info['extension']='jpeg';//判断图像类
    型如果是JPG的则把它转换成JPEG的因为图像处
    理函数在处理JPG的时候都是用的JPEG而不是JPG  
  61. }  
  62. $iml='imagecreatefrom'.$info['extension'];
  63. //取得不同图片格式的不同函数  
  64. $yuan=$iml($file['tmp_name']);
  65. //根据前面取的不同函数来取的原图的标识  
  66. $mu1=imagecreatetruecolor($m120w,$m120h);
  67. //取的要生成的缩略图的标识  
  68. $mu2=imagecreatetruecolor($m300w,$m300h);
  69. //取的要生成的缩略图的标识  
  70. $c='image'.$info['extension'];
  71. //生成输出缩略图的函数,不能分开写,否则报错  
  72. imagecopyresampled($mu1,$yuan,0,0,0,
    0,$m120w,$m120h,$imagw,$imagh);//生成缩略图120  
  73. $res=$c($mu1,$xin.'/'.$image1);
  74. //存放缩略图  
  75. if(!$res){  
  76. alert('生成120缩略图失败');  
  77. exit;  
  78. }  
  79. imagecopyresampled($mu2,$yuan,0,0
    ,0,0,$m300w,$m300h,$imagw,$imagh);
  80. //PHP生成缩略图生成缩略图120  
  81. $res=$c($mu2,$xin.'/'.$image2);
  82. //存放缩略图  
  83. if($res){  
  84. alert('生成300缩略图成功');  
  85. exit;  
  86. }  
  87. }  
  88. }  
  89. $tpl->display("tu/tu.html");  
  90. ?> 

以上这一大段的代码示例就是PHP生成缩略图的相关实现方法。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...