搜索
系统检测到您的用户名不符合规范:

ThinkPHP3.2图片处理中,压缩和裁剪图片都不能处理png图片吗?

浏览:1440 发布日期:2017年11月27日 分类:求助交流 关键字: 图片处理 jpg和png格式区别
用thinkPHP写了两个函数,一个压缩函数,一个剪切函数,但是为什么只能剪切或者压缩jpg格式的图片?png格式图片剪切或压缩出来没结果......

代码:
/*
功能:裁剪图片
参数:$path —— 图片路径(相对路径)
$rule —— 裁剪规则,内容为裁剪的大小以及开始裁剪的位置。如:"400,400,100,100",表示从坐标为(100,100)开始裁剪400*400(宽*高)大小的图片
$status —— 是否删除原图 值为1表示删除
返回:返回裁剪后的图片路径
*/
function image_crop($path,$rule,$status = "0") {
// 实例化图片
$image = new \Think\Image();
// 打开图片
$image->open($path);
// 判断剪切图片后的保存路径是否存在
$savepath = "./Public/Upload/crop/";
if(!is_dir($savepath)) {
mkdir($savepath);
}
// 获取图片类型
$type = $image->type();
// 获取图片裁剪规则
$rule = explode(",",$rule);
// 进行图片裁剪
$image->crop($rule[0],$rule[1],$rule[2],$rule[3])->save($savepath.time().".".$type);
$path = $savepath.time().".".$type;
// 判断剪切文件是否存在
if(!is_file($path)) {
// 判断是否删除原图
if($status == 1) {
unlink($path);
}
return null;
}else{
return $path;
}
}

/*
功能:按照原图的比例生成缩略图
参数:$path —— 图片路径(相对路径)
$rule —— 压缩规则,内容为压缩的大小。如:"400,300,3",表示压缩为400*300(宽*高)的图片,3代表压缩类型
$status —— 是否删除原图 值为1表示删除
返回:返回裁剪后的图片路径
*/
function image_thumb($path,$rule,$status = "0") {
// 实例化图片
$image = new \Think\Image();
// 打开图片
$image->open($path);
// 判断剪切图片后的保存路径是否存在
$savepath = "./Public/Upload/thumb/";
if(!is_dir($savepath)) {
mkdir($savepath);
}
// 获取图片后缀类型
$type = $image->type();
// 获取规则数组
$rule = explode(",",$rule);
$rule[2] = $rtype[$rule[2]];
// 获取压缩类型
switch($rule[2]) {
case 1: //等比例缩放类型
$rule[2] = \Think\Image::IMAGE_THUMB_SCALE;
break;
case 2: //缩放后填充类型
$rule[2] = \Think\Image::IMAGE_THUMB_FILLED;
break;
case 3: //居中裁剪类型
$rule[2] = \Think\Image::IMAGE_THUMB_CENTER;
break;
case 4: //左上角裁剪类型
$rule[2] = \Think\Image::IMAGE_THUMB_NORTHWEST;
break;
case 5: //右下角裁剪类型
$rule[2] = \Think\Image::IMAGE_THUMB_SOUTHEAST;
break;
case 6: //固定尺寸缩放类型
$rule[2] = \Think\Image::IMAGE_THUMB_FIXED;
break;
default: //默认为等比例缩放类型
$rule[2] = \Think\Image::IMAGE_THUMB_SCALE;
break;
}
// 图片压缩处理
$re = $image->thumb($rule[0],$rule[1],$rule[2])->save($savepath.time().".".$type);
$path = $savepath.time().".".$type;
// 判断是否删除原图
if($status == 1) {
unlink($path);
}
return $path;
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
魔爪
积分:380 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /