php图片裁剪函数


Posted in PHP onOctober 31, 2018

本文实例为大家分享了php图片裁剪函数的具体代码,供大家参考,具体内容如下

/*
 * 图片裁剪工具
 * 将指定文件裁剪成正方形
 * 以中心为起始向四周裁剪
 * @param $src_path string 源文件地址
 * @param $des_path string 保存文件地址
 * @param $des_w double 目标图片宽度
 * */
function img_cut_square($src_path,$des_path,$des_w=100){
  $img_info = getimagesize($src_path);//获取原图像尺寸信息
  $img_width = $img_info[0];//原图宽度
  $img_height = $img_info[1];//原图高度
  $img_type = $img_info[2];//图片类型 1 为 GIF 格式、 2 为 JPEG/JPG 格式、3 为 PNG 格式
  if($img_type != 2 && $img_type != 3) return ;

  /*计算缩放尺寸*/
  if($img_height > $img_width){
    $scale_width = $des_w;//缩放宽度
    $scale_height = round($des_w / $img_width * $img_height);//缩放高度

    $src_y = round(($scale_height - $des_w)/2);
    $src_x = 0;
  }else{
    $scale_height = $des_w;
    $scale_width = round($des_w / $img_height * $img_width);

    $src_y = 0;
    $src_x = round(($scale_width - $des_w)/2);
  }

  $dst_ims = imagecreatetruecolor($scale_width, $scale_height);//创建真彩画布
  $white = imagecolorallocate($dst_ims, 255, 255, 255);
  imagefill($dst_ims, 0, 0, $white);
  if($img_type == 2){
    $src_im = @imagecreatefromjpeg($src_path);//读取原图像
  }else if($img_type == 3){
    $src_im = @imagecreatefrompng($src_path);//读取原图像
  }

  imagecopyresized($dst_ims, $src_im, 0, 0 ,0, 0 , $scale_width , $scale_height , $img_width,$img_height);//缩放图片到指定尺寸


  $dst_im = imagecreatetruecolor($des_w, $des_w);
//  $white = imagecolorallocate($dst_im, 255, 255, 255);
//  imagefill($dst_im, 0, 0, $white);
  imagecopy($dst_im, $dst_ims, 0, 0, $src_x, $src_y, $des_w, $des_w);//开始裁剪图片为正方形
// imagecopyresampled($dst_im, $src_im, $src_x, $src_y, 0, 0, $real_width, $real_width,$img_width,$img_height);
  if($img_type == 2) {
    imagejpeg($dst_im, $des_path);//保存到文件
  }else if($img_type == 3){
    imagepng($dst_im,$des_path);
  }
//  imagejpeg($dst_im);//输出到浏览器
  imagedestroy($dst_im);
  imagedestroy($dst_ims);
  imagedestroy($src_im);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
解决MySQL中文输出变成问号的问题
Jun 05 PHP
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 PHP
PHP 之Section与Cookie使用总结
Sep 14 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
PHP获取POST数据的几种方法汇总
Mar 03 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
php的扩展写法总结
May 14 PHP
php+js实现裁剪任意形状图片
Oct 31 #PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 #PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 #PHP
swoole_process实现进程池的方法示例
Oct 29 #PHP
PHP大文件分片上传的实现方法
Oct 28 #PHP
PHP array_reduce()函数的应用解析
Oct 28 #PHP
php 中phar包的使用教程详解
Oct 26 #PHP
You might like
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
PHP代码优化的53个细节
2014/03/03 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
python解析多层json操作示例
2019/12/30 Python
Tensorflow累加的实现案例
2020/02/05 Python
python 检测图片是否有马赛克
2020/12/01 Python
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
促销活动策划方案
2014/01/12 职场文书
早读迟到检讨书
2014/01/24 职场文书
预备党员政审材料
2014/02/04 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis