博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
裁剪图片大小
阅读量:6226 次
发布时间:2019-06-21

本文共 4810 字,大约阅读时间需要 16 分钟。

hot3.png

 $maxsize) {             $maxpr = $maxsize / 1000;             echo  ( "警告!上传图片大小不能超过" . $maxpr . "K!" );             exit ();         }         if (move_uploaded_file ( $tmp_name, $updir . $newname . $extend )) {             return $updir . $newname . $extend;         }     }         function show_pic_scal($width, $height, $picpath) {         $imginfo = GetImageSize ( $picpath );         $imgw = $imginfo [0];         $imgh = $imginfo [1];                  $ra = number_format ( ($imgw / $imgh), 1 ); //宽高比         $ra2 = number_format ( ($imgh / $imgw), 1 ); //高宽比                      if ($imgw > $width or $imgh > $height) {             if ($imgw > $imgh) {                 $newWidth = $width;                 $newHeight = round ( $newWidth / $ra );                          } elseif ($imgw < $imgh) {                 $newHeight = $height;                 $newWidth = round ( $newHeight / $ra2 );             } else {                 $newWidth = $width;                 $newHeight = round ( $newWidth / $ra );             }         } else {             $newHeight = $imgh;             $newWidth = $imgw;         }         $newsize [0] = $newWidth;         $newsize [1] = $newHeight;                  return $newsize;     }                 function getImageInfo($src)     {         return getimagesize($src);     }     /**   * 创建图片,返回资源类型   * @param string $src 图片路径   * @return resource $im 返回资源类型    * **/    function create($src)     {         $info=getImageInfo($src);         switch ($info[2])         {             case 1:                 $im=imagecreatefromgif($src);                 break;             case 2:                 $im=imagecreatefromjpeg($src);                 break;             case 3:                 $im=imagecreatefrompng($src);                 break;         }         return $im;     }     /**   * 缩略图主函数   * @param string $src 图片路径   * @param int $w 缩略图宽度   * @param int $h 缩略图高度   * @return mixed 返回缩略图路径   * **/        function resize($src,$w,$h)     {         $temp=pathinfo($src);         $name=$temp["basename"];//文件名         $dir=$temp["dirname"];//文件所在的文件夹         $extension=$temp["extension"];//文件扩展名         $savepath="{$dir}/{$name}";//缩略图保存路径,新的文件名为*.thumb.jpg             //获取图片的基本信息         $info=getImageInfo($src);         $width=$info[0];//获取图片宽度         $height=$info[1];//获取图片高度         $per1=round($width/$height,2);//计算原图长宽比         $per2=round($w/$h,2);//计算缩略图长宽比             //计算缩放比例         if($per1>$per2||$per1==$per2)         {             //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先             $per=$w/$width;         }         if($per1<$per2)         {             //原图长宽比小于缩略图长宽比,则按照高度优先             $per=$h/$height;         }         $temp_w=intval($width*$per);//计算原图缩放后的宽度         $temp_h=intval($height*$per);//计算原图缩放后的高度         $temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布         $im=create($src);         imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height);         if($per1>$per2)         {             imagejpeg($temp_img,$savepath, 100);             imagedestroy($im);             return addBg($savepath,$w,$h,"w");             //宽度优先,在缩放之后高度不足的情况下补上背景         }         if($per1==$per2)         {             imagejpeg($temp_img,$savepath, 100);             imagedestroy($im);             return $savepath;             //等比缩放         }         if($per1<$per2)         {             imagejpeg($temp_img,$savepath, 100);             imagedestroy($im);             return addBg($savepath,$w,$h,"h");             //高度优先,在缩放之后宽度不足的情况下补上背景         }     }     /**   * 添加背景   * @param string $src 图片路径   * @param int $w 背景图像宽度   * @param int $h 背景图像高度   * @param String $first 决定图像最终位置的,w 宽度优先 h 高度优先 wh:等比   * @return 返回加上背景的图片   * **/    function addBg($src,$w,$h,$fisrt="w")     {         $bg=imagecreatetruecolor($w,$h);         $white = imagecolorallocate($bg,255,255,255);         imagefill($bg,0,0,$white);//填充背景             //获取目标图片信息         $info=getImageInfo($src);         $width=$info[0];//目标图片宽度         $height=$info[1];//目标图片高度         $img=create($src);         if($fisrt=="wh")         {             //等比缩放             return $src;         }         else        {             if($fisrt=="w")             {                 $x=0;                 $y=($h-$height)/2;//垂直居中             }             if($fisrt=="h")             {                 $x=($w-$width)/2;//水平居中                 $y=0;             }             imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100);             imagejpeg($bg,$src,100);             imagedestroy($bg);             imagedestroy($img);             return $src;         }         }     $filename = '1.jpg';$show_pic_scal=show_pic_scal(230, 230, $filename);  resize($filename,$show_pic_scal[0],$show_pic_scal[1]);

我是复制别人的, 写的挺不错的

转载于:https://my.oschina.net/u/575762/blog/348123

你可能感兴趣的文章
双机调试和windbg的命令
查看>>
UVA 11093 Just Finish it up 环形跑道 (贪心)
查看>>
BLOG同步测试
查看>>
编码规约
查看>>
MySQL注入时语句中的/*!0
查看>>
爬虫,基于request,bs4 的简单实例整合
查看>>
函数基础
查看>>
qdoj.xyz 6.22
查看>>
js随机背景颜色
查看>>
NTFS文件系统简介
查看>>
[IOC]Unity使用
查看>>
PUTTY的使用教程
查看>>
永远的经典-意大利波伦塔蛋糕Polenta Cake
查看>>
[转载] C#面向对象设计模式纵横谈——22 State状态模式
查看>>
HDOJ_ACM_Max Sum
查看>>
LeetCode 141, 142. Linked List Cycle I+II
查看>>
管道函数
查看>>
14.多线程设计模式 - Master-Worker模式
查看>>
机器学习实战——k-近邻算法
查看>>
设计模式——单例模式
查看>>