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

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • 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技术第一阶段:基础阶段(PHP程序员)重点:熟练掌握LNMPphp mvc技术架构图
  • 迄今最有前途的22个PHP框架,你知道几个?
  • PHP7对阵HHVM会有怎样的新能变化
  • 51LA为例添加方法及注意事项!讲解
  • 华尔街最炙手可热的三门编程语言,能与Java旗鼓相当的编程语言
  • 入侵php网站开源代码做过网站被反复篡改入侵,黑客攻击手法越来越高级日月神教安全技术论坛php入侵教程
  • PHP开发网站技术知识分享全过程(一)_
  • php工程师技术学互联网技术不能犹豫,否则你就和高薪擦肩而过了php模板技术smarty
  • 一种编程的思维吗?只不过是指令对应硬件?

相关

标签

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

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

联系电话:13160355545

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

联系邮箱:admin@tyweb.net

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

热门搜索

下载 2025 2026 2024 请输入关健词 货源 货货源 虚拟
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

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