php图片自动裁剪工具,php图片自动裁剪工具,解决图片变形问题,缩略图问题
class ImageCut {
public $path = '';
public $key = '';
public function __construct() {
}
public function set_image($path) {
$this->path = $path;
}
public function header_image(){
header('Content-type:image/jpeg');
}
public function header_304(){
//304缓存
$this->key = $etag = md5_file($this->path);
$last_mod = filemtime($this->path);
header('ETag:'.$etag);
header('Last-Modified:'.gmdate('D, d M Y H:i:s', $last_mod) . ' GMT');
if ((isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_mod)
|| (isset($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) < $last_mod)
|| (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)) {
header("HTTP/1.1 304 Not Modified");
return true;
} else {
return false;
}
}
public function get_data($width,$height){
if($this->path) {
$path = $this->path;
} else {
trigger_error('unset path');
}
if(!file_exists($path)) {
trigger_error('file not exist');
}
$img_type = exif_imagetype($path);
$old_size = getimagesize($path);
$old_width = $old_size[0];
$old_height = $old_size[1];
if($width==0 && $height==0) {
$width = $old_width;
$height = $old_height;
} else if($width==0) {
if($height>$old_height) {
$height = $old_height;
}
$width = $height/$old_height * $old_width;
} else if($height==0) {
if($width>$old_width) {
$width = $old_width;
}
$height = $width/$old_width * $old_height;
}
$dst_wh = $width/$height;
if($old_height>($old_width/$dst_wh)) {
$src_width = $old_width;
$src_height = $old_width/$dst_wh;
$src_x = 0;
$src_y = ($old_height-$src_height)/2;
} else {
$src_height = $old_height;
$src_width = $old_height*$dst_wh;
$src_y = 0;
$src_x = ($old_width-$src_width)/2;
}
switch($img_type) {
case IMAGETYPE_JPEG:
$img = imagecreatefromjpeg($path);
break;
case IMAGETYPE_PNG:
$img = imagecreatefrompng($path);
break;
case IMAGETYPE_GIF:
$img = imagecreatefromgif($path);
break;
}
if($src_width
$width = $src_width;
}
if($src_height
$height = $src_height;
}
//重新画
$newimage = imagecreatetruecolor($width,$height);
imagecopyresampled($newimage,$img,0,0,$src_x,$src_y,$width,$height,$src_width,$src_height);
//开始缓存图片
ob_start();
imagejpeg($newimage,false,90);
$data = ob_get_contents();
ob_end_clean();
imagedestroy($img);
imagedestroy($newimage);
return $data;
}
public function show($width,$height){
$this->header_image();
$if_304 = $this->header_304();
if($if_304) {
return;
}
echo $this->get_data($width, $height);
}
}
$cut = new ImageCut();
$cut->set_image('1.jpg');//path可以通过参数传过来
$cut->show(200,200);//随意设置宽高,可以通过参数传过来,
?>
php图片自动裁剪工具,php图片自动裁剪工具,解决图片变形问题,缩略图问题相关推荐
- 图片放大神器【waifu2x】瞬间解决图片模糊
遇见好看的图片又觉得不够清晰?扔掉又觉得可惜,非常适合当桌面壁纸舰娘图,奈何分辨率太低,到处找老司机求"原图",搜谷歌搜P站最后却发现作者只放了低分图,最后不得不放弃使用的情况吧, ...
- html图片左侧留白,HTML+CSS入门 如何解决图片跨域导致的截图空白
本篇教程介绍了HTML+CSS入门 如何解决图片跨域导致的截图空白,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < 1. 后端支持:图片要是cdn上的地址,并且允许图片跨域 ...
- android图片布局填冲满,Android图片裁剪库——cropper使用,完美解决图片填充不满布局问题...
前些时间请了一个月假,远程办公,期间项目主要做图片裁剪,脑子里第一反应就是github上开源裁剪库,试了排名的前几个,其中不是UI定制度太低就是裁剪效果不怎么样.当然你也可以直接intent一下系统的 ...
- Vue —— 解决图片缓存问题
图片更改后,但是还是显示的是之前的图片,这就是因为之前的图片被缓存了下来,为了解决图片缓存,需要在图片路径后面加上时间戳 <img :src="`${imgurl}?${Date.no ...
- 响铃:百度图腾要做正版授权平台,它能解决图片版权双向痛点吗?
文|曾响铃 来源|科技向令说(xiangling0815) 继数字音乐.游戏.影视等版权问题后,图片版权问题近来成为版权领域的热门,与版权问题天然亲近的区块链免不了掺和一下,7月,百度就推出了基于区块 ...
- javascript焦点图(根据图片下方的小框自动播放)
html和css就不详细说明了,也是简单布局,通过定位把跟随图片的小框,定位到图片下方 1 <!DOCTYPE html> 2 <html> 3 4 <head> ...
- android生成大分辨率图片,自动生成Android不同分辨率下的图片
转自: http://blog..net/offbye/article/details/50012605 Android屏幕分辨率适配的图标处理比较麻烦,让UI做不同尺寸的图片也挺浪费时间的,并且容易 ...
- Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化
Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化 导读 设计自动生成汽车车牌图片算法,基于cv2 ...
- 浮动层图片鼠标指针移到自动放大
html code: 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- html 网页背景图片根据屏幕大小CSS自动缩放
腾讯微博和QQ空间的登录背景图片是根据访客的屏幕大小自动缩放的,但是好像是用JQuery代码实现的.先不说要调用jq库拖慢了网页的打开时间,而且对于兼用性不好. 前几天用CSS研究出相同效果的样式代码 ...
最新文章
- AI一分钟 | 特斯拉再融46亿;腾讯AI Lab宣布开源多标签图像数据集
- JavaScript里面三个等号和两个等号的区别
- 设置TabBar分栏控制器上图片的大小问题
- 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
- CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案(v1.0)
- python自定义全局异常_flask中主动抛出异常及统一异常处理代码示例
- 介绍一个国外的分类网站Egouz
- VS2012生成C的dll并调用以及Python调用C的DLL
- 排名前100的PHP函数及分析
- 周期(KMP算法之Next数组的性质)
- 巧设IP路由 实现不同网段互通
- PHP底层的运行机制与原理
- CSDN博文分类全部删除了?
- 基于Python构建土地利用转移矩阵及完成Markov预测
- 结构体中的LNode与*LinkList
- 基于卫星测深的牙买加沿岸水深测量
- 12.2 两个重要级数
- 英伟达发布528.02 WHQL 新驱动,支持4070 Ti
- 多功能Web文件管理器Filestash
- 关系数据理论(回顾关系模式、数据依赖、不规范的关系模式存在的问题、 函数依赖、非平凡函数依赖/平凡函数依赖、完全函数依赖/部分函数依赖定义、传递函数依赖,码)