$start_y 起始位置Y(当选定方位模式裁剪时,此参数不起作用)

* @return 裁剪图片存储路径

*/

function thumb($src_file, $new_width, $new_height, $type = 1, $pos = 5, $start_x = 0, $start_y = 0) {

$pathinfo = pathinfo($src_file);

$dst_file = $pathinfo['dirname'] . '/' . $pathinfo['filename'] .'_'. $new_width . 'x' . $new_height . '.' . $pathinfo['extension'];

if (!file_exists($dst_file)) {

if ($new_width < 1 || $new_height < 1) {

echo "params width or height error !";

exit();

}

if (!file_exists($src_file)) {

echo $src_file . " is not exists !";

exit();

}

// 图像类型

$img_type = exif_imagetype($src_file);

$support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);

if (!in_array($img_type, $support_type, true)) {

echo "只支持jpg、png、gif格式图片裁剪";

exit();

}

/* 载入图像 */

switch ($img_type) {

case IMAGETYPE_JPEG :

$src_img = imagecreatefromjpeg($src_file);

break;

case IMAGETYPE_PNG :

$src_img = imagecreatefrompng($src_file);

break;

case IMAGETYPE_GIF :

$src_img = imagecreatefromgif($src_file);

break;

default:

echo "载入图像错误!";

exit();

}

/* 获取源图片的宽度和高度 */

$src_width = imagesx($src_img);

$src_height = imagesy($src_img);

/* 计算剪切图片的宽度和高度 */

$mid_width = ($src_width < $new_width) ? $src_width : $new_width;

$mid_height = ($src_height < $new_height) ? $src_height : $new_height;

/* 初始化源图片剪切裁剪的起始位置坐标 */

switch ($pos * $type) {

case 1://1为顶端居左

$start_x = 0;

$start_y = 0;

break;

case 2://2为顶端居中

$start_x = ($src_width - $mid_width) / 2;

$start_y = 0;

break;

case 3://3为顶端居右

$start_x = $src_width - $mid_width;

$start_y = 0;

break;

case 4://4为中部居左

$start_x = 0;

$start_y = ($src_height - $mid_height) / 2;

break;

case 5://5为中部居中

$start_x = ($src_width - $mid_width) / 2;

$start_y = ($src_height - $mid_height) / 2;

break;

case 6://6为中部居右

$start_x = $src_width - $mid_width;

$start_y = ($src_height - $mid_height) / 2;

break;

case 7://7为底端居左

$start_x = 0;

$start_y = $src_height - $mid_height;

break;

case 8://8为底端居中

$start_x = ($src_width - $mid_width) / 2;

$start_y = $src_height - $mid_height;

break;

case 9://9为底端居右

$start_x = $src_width - $mid_width;

$start_y = $src_height - $mid_height;

break;

default://随机

break;

}

// 为剪切图像创建背景画板

$mid_img = imagecreatetruecolor($mid_width, $mid_height);

//拷贝剪切的图像数据到画板,生成剪切图像

imagecopy($mid_img, $src_img, 0, 0, $start_x, $start_y, $mid_width, $mid_height);

// 为裁剪图像创建背景画板

$new_img = imagecreatetruecolor($new_width, $new_height);

//拷贝剪切图像到背景画板,并按比例裁剪

imagecopyresampled($new_img, $mid_img, 0, 0, 0, 0, $new_width, $new_height, $mid_width, $mid_height);

/* 按格式保存为图片 */

switch ($img_type) {

case IMAGETYPE_JPEG :

imagejpeg($new_img, $dst_file, 100);

break;

case IMAGETYPE_PNG :

imagepng($new_img, $dst_file, 9);

break;

case IMAGETYPE_GIF :

imagegif($new_img, $dst_file, 100);

break;

default:

break;

}

}

return ltrim($dst_file, '.');

}

php gif裁剪,PHP实现图片裁剪与缩放的几种方法相关推荐

  1. Android 让图片等比例缩放的三种方法

    方法一:客户端等比例 前提条件:服务器端需要返回原始图片的"宽和高"或者"宽高缩放比例",客户端要显示的图片的宽或者高只要其一是固定的(例如:高度为200,宽度 ...

  2. php如何防止图片盗用/盗链的两种方法(转)

    图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服 ...

  3. pdf怎么转换成jpg图片?快来收藏这两种方法

    PDF文件是一种广泛使用的文档格式,因其跨平台.兼容性强.内容不易变化等优点,被广泛应用于各行各业.然而,在某些情况下,我们需要将PDF文件转换为图片格式,例如需要将PDF文件的内容插入到演示文稿中, ...

  4. matplotlib 图片复制到Word的几种方法

    matplotlib 图片复制到Word的几种方法 1.savefig()方法支持存储为eps格式的矢量图:还可以保存为svg格式,再用其它工具转换为emf:如果只需要一般的清晰度,也可以在保存png ...

  5. 微信小程序的swiper轮播图中的图片设置自适应高度的一种方法

    微信小程序的swiper轮播图中的图片设置自适应高度的一种方法 小程序中的轮播图很简单,但是唯一的缺陷就是 swiper 是固定的150px 高度(320px 宽度),这样如果传入的图片大于这个高度就 ...

  6. html给图片加描边,PS修图之进行图片描边,教你两种方法

    PS修图之进行图片描边,教你两种方法 2020-03-27 我们在进行图片处理的过程中有时需要添加描边,即在图片周围加上一层边框,使用PS给图片描边的方法有很多,应该选择哪种呢?下文整理了两种关于PS ...

  7. ios 图片裁剪框架_iOS 图片裁剪与修改

    最近做的项目中需要上传头像,发表内容的时候也要涉及到图片上传,我直接用的原图上传,但是由于公司网络差,原图太大,老是加载好久好久,所以需要把原图裁剪或者修改分辨率之后再上传,找了好久,做了很多尝试才解 ...

  8. 【python图像处理】单张图像裁剪与批量图片裁剪

    一.效果 二.代码 1.单张图片裁剪 # 将单张图片分成5张 import cv2 import numpy as np srcImg = cv2.imread("F:/test.jpg&q ...

  9. android 调用图片裁剪功能,Android图片裁剪,合成(调用系统裁剪功能)

    做照片相框 步骤就是跟美图秀秀一样,先截图,然后添加相框 在之前Bitmap.createBitmap那个文里,说过使用jpg图片会挡住底层图片,用画这种方法合成图片,没有问题. public cla ...

最新文章

  1. 铁线蕨算法(Adiantum)为低端智能手机提供磁盘加密服务
  2. 学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?
  3. [js高手之路]打造通用的匀速运动框架
  4. 推荐系统的实践与思考(上篇)【转】
  5. java parameters用法_(四)Parameters,简单参数就用这个
  6. NYOJ 14 会场安排问题 贪心算法 之 选择不相交区间
  7. VMware Workstation 8正式版下载+密钥序列号
  8. spring @Value注解#和$区别
  9. amd sata controller下载_AMD发布全新锐龙芯片组驱动:告别卡死、报错
  10. 【HTML5】Web存储、通信、地理位置
  11. 罗马数字与阿拉伯数字转换
  12. DEA博弈交叉效率matlab,dea的交叉效率
  13. 2021.12.13(第一周) 实习周记lzhuan
  14. CentOS 安装SVN以及可视化管理工具iF.SVNAdmin
  15. wps演示怎么提高列表级别_wps文字如何设置标题级别?wps设置标题级别教程
  16. 磁盘分区怎么恢复回去?易我分区大师恢复丢失分区
  17. 地理坐标(经纬度坐标)和屏幕坐标(xy坐标)间的转换
  18. 华为路由器怎么配置虚拟服务器,华为路由器配置实例详细备注讲解
  19. java 四分位算法_四分位数怎么算
  20. python背单词游戏,python背单词小程序

热门文章

  1. Spring Boot微服务中Chaos Monkey的应用
  2. mysql中有哪些数值型函数_mysql数值型函数汇总
  3. 高温保护_pet高温胶带保护膜应用领域
  4. oracle cluster n,10g Rac的cluster_interconnect信息
  5. cpythonjava解释xml_详解python使用lxml操作xml格式文件
  6. 语言const的生命周期_C语言的角落——这些C语言不常用的特性你知道吗?
  7. 【并发编程】并发编程的三大特性
  8. 轻量级高精度人脸检测推荐
  9. pytorch筛选修改问题
  10. 小波变换和Gabor变换