php gif裁剪,PHP实现图片裁剪与缩放的几种方法
$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实现图片裁剪与缩放的几种方法相关推荐
- Android 让图片等比例缩放的三种方法
方法一:客户端等比例 前提条件:服务器端需要返回原始图片的"宽和高"或者"宽高缩放比例",客户端要显示的图片的宽或者高只要其一是固定的(例如:高度为200,宽度 ...
- php如何防止图片盗用/盗链的两种方法(转)
图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服 ...
- pdf怎么转换成jpg图片?快来收藏这两种方法
PDF文件是一种广泛使用的文档格式,因其跨平台.兼容性强.内容不易变化等优点,被广泛应用于各行各业.然而,在某些情况下,我们需要将PDF文件转换为图片格式,例如需要将PDF文件的内容插入到演示文稿中, ...
- matplotlib 图片复制到Word的几种方法
matplotlib 图片复制到Word的几种方法 1.savefig()方法支持存储为eps格式的矢量图:还可以保存为svg格式,再用其它工具转换为emf:如果只需要一般的清晰度,也可以在保存png ...
- 微信小程序的swiper轮播图中的图片设置自适应高度的一种方法
微信小程序的swiper轮播图中的图片设置自适应高度的一种方法 小程序中的轮播图很简单,但是唯一的缺陷就是 swiper 是固定的150px 高度(320px 宽度),这样如果传入的图片大于这个高度就 ...
- html给图片加描边,PS修图之进行图片描边,教你两种方法
PS修图之进行图片描边,教你两种方法 2020-03-27 我们在进行图片处理的过程中有时需要添加描边,即在图片周围加上一层边框,使用PS给图片描边的方法有很多,应该选择哪种呢?下文整理了两种关于PS ...
- ios 图片裁剪框架_iOS 图片裁剪与修改
最近做的项目中需要上传头像,发表内容的时候也要涉及到图片上传,我直接用的原图上传,但是由于公司网络差,原图太大,老是加载好久好久,所以需要把原图裁剪或者修改分辨率之后再上传,找了好久,做了很多尝试才解 ...
- 【python图像处理】单张图像裁剪与批量图片裁剪
一.效果 二.代码 1.单张图片裁剪 # 将单张图片分成5张 import cv2 import numpy as np srcImg = cv2.imread("F:/test.jpg&q ...
- android 调用图片裁剪功能,Android图片裁剪,合成(调用系统裁剪功能)
做照片相框 步骤就是跟美图秀秀一样,先截图,然后添加相框 在之前Bitmap.createBitmap那个文里,说过使用jpg图片会挡住底层图片,用画这种方法合成图片,没有问题. public cla ...
最新文章
- 铁线蕨算法(Adiantum)为低端智能手机提供磁盘加密服务
- 学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?
- [js高手之路]打造通用的匀速运动框架
- 推荐系统的实践与思考(上篇)【转】
- java parameters用法_(四)Parameters,简单参数就用这个
- NYOJ 14 会场安排问题 贪心算法 之 选择不相交区间
- VMware Workstation 8正式版下载+密钥序列号
- spring @Value注解#和$区别
- amd sata controller下载_AMD发布全新锐龙芯片组驱动:告别卡死、报错
- 【HTML5】Web存储、通信、地理位置
- 罗马数字与阿拉伯数字转换
- DEA博弈交叉效率matlab,dea的交叉效率
- 2021.12.13(第一周) 实习周记lzhuan
- CentOS 安装SVN以及可视化管理工具iF.SVNAdmin
- wps演示怎么提高列表级别_wps文字如何设置标题级别?wps设置标题级别教程
- 磁盘分区怎么恢复回去?易我分区大师恢复丢失分区
- 地理坐标(经纬度坐标)和屏幕坐标(xy坐标)间的转换
- 华为路由器怎么配置虚拟服务器,华为路由器配置实例详细备注讲解
- java 四分位算法_四分位数怎么算
- python背单词游戏,python背单词小程序
热门文章
- Spring Boot微服务中Chaos Monkey的应用
- mysql中有哪些数值型函数_mysql数值型函数汇总
- 高温保护_pet高温胶带保护膜应用领域
- oracle cluster n,10g Rac的cluster_interconnect信息
- cpythonjava解释xml_详解python使用lxml操作xml格式文件
- 语言const的生命周期_C语言的角落——这些C语言不常用的特性你知道吗?
- 【并发编程】并发编程的三大特性
- 轻量级高精度人脸检测推荐
- pytorch筛选修改问题
- 小波变换和Gabor变换