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 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php定界符
Jun 19 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
PHP Static延迟静态绑定用法分析
Mar 16 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
详解Vue路由自动注入实践
2019/04/17 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
python对url格式解析的方法
2015/05/13 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
python调用staf自动化框架的方法
2018/12/26 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
python如何控制进程或者线程的个数
2020/10/16 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
应届生财务会计求职信
2013/11/05 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
2015年质检工作总结
2015/05/04 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python
关于vue-router-link选择样式设置
2022/04/30 Vue.js