宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > 玩php你会图像裁剪吗腾云网络教你图像裁剪服务器搭建

玩php你会图像裁剪吗腾云网络教你图像裁剪服务器搭建

2019-07-20

在我们的工作的项目中,有时候我们需要显示规定尺寸的图片,虽然可以通过css来控制显示大小。但是如果图片过大,会造成加载的延迟,影响网站整体性能。因此,我们需要一个服务器来帮助我们进行图片的裁剪。流程大致是,首先我们传给服务器原图像和裁剪的尺寸,然后服务器进行裁剪,生成对应的裁剪图片,下次我们再访问相同图像和相同的裁剪尺寸的时候,我们就不需要裁剪,直接进行图片的访问就行。

Talk is cheap, show me the code.


<?php// ①构建图片请求地址比如  http://xxx.com/resize.php?site=www&width=300&height=200&mode=2&path=uploadfile/helloworld.png// ②配置nginx重写规则  rewrite /s/(.*)/(\d+)x(\d+)-(\d)/(.*) /s/resize.php?site=$1&width=$2&height=$3&mode=$4&path=$5 last;//③进行裁剪图片的处理$path = trim($_GET['path']);$mode = intval($_GET['mode']);$site = trim($_GET['site']);$width = intval($_GET['width']);$height = intval($_GET['height']);$site_list = array('crop' => '.');$orig_dir = dirname(__FILE__);if (!array_key_exists($site, $site_list)) {header('HTTP/1.1 400 Bad Request');exit();}if ($mode > 3 || $mode < 0) {header('HTTP/1.1 400 Bad Request');exit();}$orig_file = $site_list[$site] . $path;if (!file_exists($orig_file)) {header('HTTP/1.1 404 Not Found');exit();}$file_ext = '.' . pathinfo($path, PATHINFO_EXTENSION);$file_name = basename($path, $file_ext);$save_path = "{$orig_dir}/{$site}/{$width}x{$height}-{$mode}{$path}";$save_dir = dirname($save_path);if (!file_exists($save_dir)) {wpx_mkdir($save_dir);}$target_width = $width;$target_height = $height;$save_image = $save_dir . '/' . $file_name . '.jpg';if (file_exists($save_image)) {header('Content-Type: image/jpeg');header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');echo file_get_contents($save_image);}imagecropper2($orig_file, $target_width, $target_height, $save_image);die;//原图像对应缩放裁剪,会拉伸图片function imagecropper2($source_path, $width, $height, $save_image){//获取原图像$filename的宽度$width_orig和高度$height_orig$info =  getimagesize($source_path);$width_orig = $info[0];$height_orig = $info[1];$mime = $info['mime'];//根据参数$width和$height值,换算出等比例缩放的高度和宽度if ($width && ($width_orig<$height_orig)){$width = ($height/$height_orig)*$width_orig;}else{$height = ($width / $width_orig)*$height_orig;}//将原图缩放到这个新创建的图片资源中$image_p = imagecreatetruecolor($width, $height);//获取原图的图像资源if($mime=='image/jpeg'){$image = imagecreatefromjpeg($source_path);}elseif($mime=='image/png'){$image = imagecreatefrompng($source_path);}elseif($mime=='image/gif'){$image = imagecreatefromgif($source_path);}//使用imagecopyresampled()函数进行缩放设置imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);//将缩放后的图片$image_p保存,100(质量最佳,文件最大)if($mime=='image/jpeg'){imagejpeg($image_p,$save_image);header('Content-Type: image/jpeg');imagejpeg($image_p);}elseif($mime=='image/png'){imagepng($image_p,$save_image);header('Content-Type: image/jpeg');imagepng($image_p);}else{imagegif($image_p,$save_image);header('Content-Type: image/jpeg');imagegif($image_p);}}//进行比例保存裁剪,会丢失图像部分像素function imagecropper($source_path, $target_width, $target_height, $save_image){$source_info = getimagesize($source_path);$source_width = $source_info[0];$source_height = $source_info[1];$source_mime = $source_info['mime'];$source_ratio = $source_height / $source_width;$target_ratio = $target_height / $target_width;// 源图过高if ($source_ratio > $target_ratio) {$cropped_width = $source_width;$cropped_height = $source_width * $target_ratio;$source_x = 0;$source_y = ($source_height – $cropped_height) / 2;}// 源图过宽elseif ($source_ratio < $target_ratio) {$cropped_width = $source_height / $target_ratio;$cropped_height = $source_height;$source_x = ($source_width – $cropped_width) / 2;$source_y = 0;}// 源图适中else {$cropped_width = $source_width;$cropped_height = $source_height;$source_x = 0;$source_y = 0;}switch ($source_mime) {case 'image/gif':$source_image = imagecreatefromgif($source_path);break;case 'image/jpeg':$source_image = imagecreatefromjpeg($source_path);break;case 'image/png':$source_image = imagecreatefrompng($source_path);break;default:return false;break;}$target_image = imagecreatetruecolor($target_width, $target_height);$cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);// 裁剪$bool = imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);// 缩放$bool = imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);imagejpeg($target_image, $save_image);header('Content-Type: image/jpeg');imagejpeg($target_image);imagedestroy($source_image);imagedestroy($target_image);imagedestroy($cropped_image);}// 循环生成目录function wpx_mkdir($dir, $mode = 0777){if (is_dir($dir) || @mkdir($dir, $mode)) {return true;}if (!wpx_mkdir(dirname($dir), $mode)) {return false;}return @mkdir($dir, $mode);}

  • 通过上面的处理,我们就将图片按照我们设置的尺寸进行了裁剪。我们还可以定期对裁剪图片进行清理,这样就不需要占用太多服务器空间。只有经常访问的图片才会一直保存。


Tag:
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • php原生开发腾讯云带来的“理想国云原生技术”报告调查|CSDNandroid原生开发
  • 2015年上半年排行榜TOP20榜单:后50名
  • 腾云网络教你如何扩展Laravel常用方法
  • 51LA为例添加方法及注意事项!讲解
  • php代码注入裸聊app下载php代码注入
  • 关于网站升级PHP版本的方法步骤介绍,你知道吗?
  • 升级PHP7 CentOS7系统下的简易教程
  • 使用php代码格式化工具()需在命令行下进行
  • php中7个常用框架
  • php开发框架流行度排名为什么用,它能用在哪儿,能做什么?开发高质量php框架与应用的实际案例解析

相关

标签

seo(1192) 市场营销(661) 网站制作(574) 网站建设(568) 搜索引擎(553) 网站(482) PHP(363) 编程语言(346) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(150) 搜索引擎优化(150) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(111) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(93) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站建设方案(66) 网站分析(66) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) php框架(51) 网页设计(51) 百度(51) 网站建设知识(50) 谷歌(50) 网站结构(50)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2025 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

网站建设 网站 公司 宿迁 模版 模板 源码 教育 学校 响应式 百度 营销型 seo 网站架构 交通设备制作 教育类网站 项王故里网站建设案例 中文编程 优化 管理
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们