001 if ( ! function_exists('ImageResize')) 002 { 003 function ImageResize($srcFile,$toW,$toH,$toFile="") 004 { 005 global $cfg_photo_type; 006 if($toFile=="") 007 { 008 $toFile=$srcFile; 009 } 010 $info=""; 011 $srcInfo=GetImageSize($srcFile,$info); 012 switch ($srcInfo[2]) 013 { 014 case 1: 015 if(!$cfg_photo_type['gif']) 016 { 017 return false; 018 } 019 $im=imagecreatefromgif($srcFile); 020 break; 021 case 2: 022 if(!$cfg_photo_type['jpeg']) 023 { 024 return false; 025 } 026 $im=imagecreatefromjpeg($srcFile); 027 break; 028 case 3: 029 if(!$cfg_photo_type['png']) 030 { 031 return false; 032 } 033 $im=imagecreatefrompng($srcFile); 034 break; 035 case 6: 036 if(!$cfg_photo_type['bmp']) 037 { 038 return false; 039 } 040 $im=imagecreatefromwbmp($srcFile); 041 break; 042 } 043 $srcW=ImageSX($im); 044 $srcH=ImageSY($im); 045 if($srcW<=$toW && $srcH<=$toH ) 046 { 047 return true; 048 } 049 //缩略生成并裁剪 050 $newW=$toH * $srcW / $srcH; 051 $newH=$toW * $srcH / $srcW; 052 if($newH >=$toH) 053 { 054 $ftoW=$toW; 055 $ftoH=$newH; 056 } 057 else 058 { 059 $ftoW=$newW; 060 $ftoH=$toH; 061 } 062 if($srcW>$toW||$srcH>$toH) 063 { 064 if(function_exists("imagecreatetruecolor")) 065 { 066 @$ni=imagecreatetruecolor($ftoW,$ftoH); 067 if($ni) 068 { 069 imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 070 } 071 else 072 { 073 $ni=imagecreate($ftoW,$ftoH); 074 imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 075 } 076 } 077 else 078 { 079 $ni=imagecreate($ftoW,$ftoH); 080 imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 081 } 082 //裁剪图片成标准缩略图 083 $new_imgx=imagecreatetruecolor($toW,$toH); 084 if($newH >=$toH) 085 { 086 imagecopyresampled($new_imgx,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH); 087 } 088 else 089 { 090 imagecopyresampled($new_imgx,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH); 091 } 092 switch ($srcInfo[2]) 093 { 094 case 1: 095 imagegif($new_imgx,$toFile); 096 break; 097 case 2: 098 imagejpeg($new_imgx,$toFile,85); 099 break; 100 case 3: 101 imagepng($new_imgx,$toFile); 102 break; 103 case 6: 104 imagebmp($new_imgx,$toFile); 105 break; 106 default: 107 return false; 108 } 109 imagedestroy($new_imgx); 110 imagedestroy($ni); 111 } 112 imagedestroy($im); 113 return true; 114 } 115 } |
原创dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《原创dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题》
文章链接:https://www.umxmt.com/751.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
文章名称:《原创dedecms缩略图系列教程:解决dedecms缩略图缩放变形问题》
文章链接:https://www.umxmt.com/751.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。