zoukankan      html  css  js  c++  java
  • PHP获取远程图片并调整图像大小

    1. <?php  
    2. /** 
    3. *函数:调整图片尺寸或生成缩略图 
    4. *修改:2013-2-15 
    5. *返回:True/False 
    6. *参数: 
    7. *   $Image   需要调整的图片(含路径) 
    8. *   $Dw=450   调整时最大宽度;缩略图时的绝对宽度 
    9. *   $Dh=450   调整时最大高度;缩略图时的绝对高度 
    10. *   $Type=1   1,调整尺寸; 2,生成缩略图 
    11. */  
    12.   
    13. $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png');  
    14.   
    15. function compressImg($Image,$Dw,$Dh,$Type){  
    16.     echo $Image;  
    17.     IF(!file_exists($Image)){  
    18.         echo "不存在图片";  
    19.         return false;  
    20.     }  
    21.     echo "存在图片";  
    22.     // 如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值(生成缩略图操作)  
    23.     // 当Type==1的时候,将不拷贝原图像文件,而是在原来的图像文件上重新生成缩小后的图像(调整尺寸操作)  
    24.     IF($Type!=1){  
    25.         copy($Image,str_replace(".","_x.",$Image));  
    26.         $Image=str_replace(".","_x.",$Image);  
    27.     }  
    28.     // 取得文件的类型,根据不同的类型建立不同的对象  
    29.     $ImgInfo=getimagesize($Image);  
    30.     Switch($ImgInfo[2]){  
    31.         case 1:  
    32.             $Img =@imagecreatefromgif($Image);  
    33.             break;  
    34.         case 2:  
    35.             $Img =@imagecreatefromjpeg($Image);  
    36.             Break;  
    37.         case 3:  
    38.             $Img =@imagecreatefrompng($Image);  
    39.             break;  
    40.     }  
    41.     // 如果对象没有创建成功,则说明非图片文件  
    42.     IF(Empty($Img)){  
    43.         // 如果是生成缩略图的时候出错,则需要删掉已经复制的文件  
    44.         IF($Type!=1){  
    45.             unlink($Image);  
    46.         }  
    47.         return false;  
    48.     }  
    49.     // 如果是执行调整尺寸操作则  
    50.     IF($Type==1){  
    51.         $w=ImagesX($Img);  
    52.         $h=ImagesY($Img);  
    53.         $width = $w;  
    54.         $height = $h;  
    55.         IF($width>$Dw){  
    56.             $Par=$Dw/$width;  
    57.             $width=$Dw;  
    58.             $height=$height*$Par;  
    59.             IF($height>$Dh){  
    60.                 $Par=$Dh/$height;  
    61.                 $height=$Dh;  
    62.                 $width=$width*$Par;  
    63.             }  
    64.         } ElseIF($height>$Dh) {  
    65.             $Par=$Dh/$height;  
    66.             $height=$Dh;  
    67.             $width=$width*$Par;  
    68.             IF($width>$Dw){  
    69.                 $Par=$Dw/$width;  
    70.                 $width=$Dw;  
    71.                 $height=$height*$Par;  
    72.             }  
    73.         } Else {  
    74.             $width=$width;  
    75.             $height=$height;  
    76.         }  
    77.         $nImg =ImageCreateTrueColor($width,$height);// 新建一个真彩色画布  
    78.         ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$height,$w,$h);// 重采样拷贝部分图像并调整大小  
    79.         ImageJpeg($nImg,$Image);// 以JPEG格式将图像输出到浏览器或文件  
    80.         return true;  
    81.     } Else {// 如果是执行生成缩略图操作则  
    82.         $w=ImagesX($Img);  
    83.         $h=ImagesY($Img);  
    84.         $width = $w;  
    85.         $height = $h;  
    86.         $nImg =ImageCreateTrueColor($Dw,$Dh);  
    87.         IF($h/$w>$Dh/$Dw){// 高比较大  
    88.             $width=$Dw;  
    89.             $height=$h*$Dw/$w;  
    90.             $IntNH=$height-$Dh;  
    91.             ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h);  
    92.         } Else {// 宽比较大  
    93.             $height=$Dh;  
    94.             $width=$w*$Dh/$h;  
    95.             $IntNW=$width-$Dw;  
    96.             ImageCopyReSampled($nImg, $Img,-$IntNW/1.8,0,0,0, $width, $Dh, $w, $h);  
    97.         }  
    98.         ImageJpeg($nImg,$Image);  
    99.         return true;  
    100.     }  
    101. };  
    102. ?>  
    103.   
    104. <?php  
    105. //网络图片路径  
    106. $imgPath = 'http://www.lesohome.com/phone/compress-img/251139474ba926db3d7850.jpg';  
    107. //$imgPath = "http://www.lesohome.com/userfiles/image/20111125/251139474ba926db3d7850.jpg";  
    108. $tempPath = str_replace('http://www.lesohome.com/', '', $imgPath);//替换换行字符  
    109. $name = strrchr($tempPath, "/");  
    110. $path = str_replace($name, '', $tempPath);//替换换行字符  
    111.   
    112. /** 
    113.  *根据路径path建立多级目录 
    114.  *$dir目标目录 $mode权限,0700表示最高权限 
    115. */  
    116. function  makedir( $dir , $mode = "0700" ) {  
    117.     if(strpos($dir , "/" )){  
    118.         $dir_path = "" ;  
    119.         $dir_info = explode("/" , $dir );  
    120.         foreach($dir_info as $key => $value){  
    121.             $dir_path .= $value ;  
    122.             if (!file_exists($dir_path)){  
    123.                 @mkdir($dir_path, $mode) or die ("建立文件夹时失败了" );  
    124.                 @chmod($dir_path, $mode);  
    125.             } else {  
    126.                 $dir_path .= "/" ;  
    127.                 continue ;  
    128.             }  
    129.             $dir_path .= "/" ;  
    130.         }  
    131.         return $dir_path ;  
    132.     } else {  
    133.         @mkdir($dir, $mode) or die( "建立失败了,请检查权限" );  
    134.         @chmod($dir, $mode);  
    135.         return $dir ;  
    136.     }  
    137. //end makedir  
    138. makedir($path);  
    139.   
    140. /** 
    141.  *根据url获取服务器上的图片 
    142.  *$url服务器上图片路径 $filename文件名 
    143. */  
    144. function GrabImage($url,$filename="") {  
    145.     if($url=="") return false;  
    146.     if($filename=="") {  
    147.         $ext=strrchr($url,".");  
    148.         if($ext!=".gif" && $ext!=".jpg" && $ext!=".png")  
    149.             return false;  
    150.         $filename=date("YmdHis").$ext;  
    151.     }  
    152.     ob_start();   
    153.     readfile($url);   
    154.     $img = ob_get_contents();   
    155.     ob_end_clean();  
    156.     $size = strlen($img);   
    157.   
    158.     $fp2=@fopen($filename, "a");  
    159.     fwrite($fp2,$img);  
    160.     fclose($fp2);  
    161.     return $filename;  
    162. }  
    163. ?>  
    164.   
    165. <html>  
    166. <body>  
    167. 允许上传的文件类型为:<?=implode(', ',$phtypes)?><br/>  
    168. <input type="button" id="getImg" name="getImg" size="10" value="获取图片并保存" onclick="alert('12333');" />  
    169.   
    170. <?php  
    171.   
    172. echo $path."<br>";  
    173. /**/  
    174. $bigImg=GrabImage($imgPath, $tempPath);  
    175. if($bigImg){  
    176.     echo '<img src="'.$bigImg.'"><br>';  
    177. else {  
    178.     echo "false";  
    179. }   
    180.   
    181. compressImg($bigImg,100,80,1);  
    182. ?>  
    183. </body>  
    184. </html>  
  • 相关阅读:
    Docker部署
    编写一个脚本用户进入容器
    Shell脚本写的《俄罗斯方块》
    Linux磁盘分区(9)
    Linux任务调度(8)
    Linux权限管理(7)
    Linux组管理(6)
    Linux实用指令(5)
    C#中 char、byte、string
    编码转换
  • 原文地址:https://www.cnblogs.com/sanwenyu/p/4563987.html
Copyright © 2011-2022 走看看