标签分类 技术文章:
当前位置:首页 > PHP编程文章 > ThinkPHP中图片按比例切割的代码实例

ThinkPHP实现图片按比例切割的具体方法和代码

  • 发布时间:
  • 作者:码农之家原创
  • 点击:90

这篇文章主要知识点是关于ThinkPHP、图片切割、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP、MySQL与JavaScript学习手册
  • 类型:PHP大小:76 MB格式:PDF出版:中国电力出版社作者:Robin Nixon
立即下载

更多PHP相关的学习资源可以参阅 PHP电子书程序设计电子书 等栏目。

ThinkPHP中图片按比例切割的代码实例

在开发中,经常会遇到图片需要按照一定比例进行缩放的情况,但是,如果一张长宽比为2:1的如果需要按照1:1的比例进行展示,那么这就意味着图片会发生变形。下面便介绍下载tp框架中如何按照比例切割并缩放图片。

  /**
   * 切割图片
   * @param $path 所要切割的图片的路径
   * @param $prefix 给切割后图片的前缀
   * @param $width 宽度所占比例
   * @param $height 高度所占比例
   * @return string 图片名称
   */
function sizeThumb($path,$prefix,$width,$height){
  import("ORG.Util.Image.ThinkImage");
  $image=new ThinkImage();
  $image->open('.'.$path);//打开缩略图进行编辑
  $imageWidth=$image->width();//获得图片尺寸
  $imageHeight=$image->height();
  $save_name=getThumb($path, $prefix);
  if (($imageHeight/$height*$width)>$imageWidth) {//按照高切割,如果宽度没有那么长,就按宽度切
    $image->thumb($imageWidth, ($imageWidth/$width*$height),THINKIMAGE_THUMB_CENTER)->save('.'.$save_name);
  }else{
    $image->thumb(($imageHeight/$height*$width), $imageHeight,THINKIMAGE_THUMB_CENTER)->save('.'.$save_name);
  }
  return $save_name;
}

在这里采用的是从中间进行截图最大比例的图片的方式,如果需要使用其他方式的话,例如从左边开始截取这样的,修改‘THINKIMAGE_THUMB_CENTER'即可,服务端采取这样的方式也并不是必要的,毕竟前端也可以处理,应当按照实际情况进行考虑。

当然,一般进行图片的存储都是存储图片的相对位置,如果生成了缩略图,我们其实也没有必要再使用一个字段保存我们的缩略图,我们只需要重写切割拼接字符串就行

  /**
   * 获取图片路径
   * @param $prefix 图片的前缀
   * @param $img_url 原图的路径
   * @return string 图片路径
   */
function getThumb($img_url,$prefix){
  $str_arr=explode('/', $img_url);
  $last=count($str_arr);
  $str_arr[$last-1]=$prefix.$str_arr[$last-1];
  $str=implode('/', $str_arr);
  return $str;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接

以上就是本次给大家分享的关于PHP的全部知识点内容总结,大家还可以在下方相关文章里找到PHP7引入的"??"和"?:"的、 jquery+thinkphp实现跨抓取数、 《PHP和MySQL Web开发》知识、 等php文章进一步学习,感谢大家的阅读和支持。

上一篇:PHP中的日期时间处理利器Carbon实例用法

下一篇:PHP保存网站用户密码到css文件的实现方法总结

展开 +

收起 -

学习笔记
网友NO.136117

PHP大文件切割上传并带进度条功能示例

本文实例讲述了PHP大文件切割上传并带进度条功能。分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能。 项目结构图: 14-slice-upload-fix.html文件: !DOCTYPE htmlhtmlhead meta charset="utf-8" meta http-equiv="X-UA-Compatible" content="IE=edge" title大文件切割上传带进度条/title link rel="stylesheet" href=""scriptvar xhr = new XMLHttpRequest();//xhr对象var clock = null;function selfile(){ clock = window.setInterval(sendfile,1000);}var sendfile = (function (){ const LENGTH = 1024 * 1024 * 10;//每次上传的大小 var start = 0;//每次上传的开始字节 var end = start + LENGTH;//每次上传的结尾字节 var sending = false;//表示是否正在上传 var fd = null;//创建表单数据对象 var blob = null;//二进制对象 var percent = 0; return (function (){ //如果有块正在上传,则不进行上传 if(sending == true){ return; } var file = document.getElementsByName('video')[0].files[0];//文件对象 //如果stafile.size,就结束了 if(start file.size){ clearInterval(clock); return; } blob = file.slice(start,end);//根据长度截取每次需要上传的数据 fd = new FormData();//每一次需要重新创建 fd.append('video',blob);//添加数据到fd对象中 up(fd); //重新设置开始和结尾 start = end; end = start + LENGTH; sending = false;//上传完了 //显示进度条 percent = 100 ……

网友NO.236148

PHP大文件切割上传功能实例分析

本文实例讲述了PHP大文件切割上传功能。分享给大家供大家参考,具体如下: 大家都知道php上传文件有限制,如果没有修改过php.ini文件的话,默认的上传大小限制为2M,那么该如何上传大文件了,比如说上传一个1G多的大文件,可以使用大文件切割上传的方式来解决。 何为大文件切割上传? 原理:利用HTML5的新特性,将文件内容切割成分段的二进制信息,然后每次向服务器上传一段,而服务器,只需要把我们每次上传的二进制信息整合存储到一个文件中,那么最后这个文件就是所上传的文件。 由于php.ini默认的上传大小为2M,如果每批都上传2M,我测试的时候时间比较长,这里我将其限制大小该为20M,最大post数据为28M,便于测试。如果实际开发中不能修改其参数,则每批上传的数据不能超过最大限制。 post_max_size = 28Mupload_max_filesize = 20M JavaScript中的File对象 在之前的文章中我们已经使用到了这个Api,File对象中保存了文件的大小、名称、类型等信息 JavaScript中的Blob对象 Blob对象是二进制对象,也是File对象的父类,Blob对象中有一个很重要的方法: slice() 方法,利用这个方法我们可以把文件内容切割成二进制信息。 slice() 方法接受三个参数,起始偏移量,结束偏移量,还有可选的 mime 类型。如果 mime 类型,没有设置,那么新的……

网友NO.806750

PHP 中使用explode()函数切割字符串为数组的示例

explode()函数的作用:使用一个字符串分割另一个字符串,打散为数组。 例如: 字符串 $pizza = "第1 第2 第3 第4 第5 第6"; 根据空格分割后: $pieces = explode(” “, $pizza); $pieces是分割后的数组,我们打印出来看下 ?php$pizza = "第1 第2 第3 第4 第5 第6";$pieces = explode(" ", $pizza);foreach($pieces as $val){ echo $val."br";}piece1piece2piece3piece4piece5piece6 例子2:根据逗号分割 ?php$string = '今天太阳很大,我们都没出去。中午我们再食堂吃饭,都很开心!';$string_arr = explode(",", $string );foreach($string_arr as $val){ echo $val."br";} 输出结果: 今天太阳很大 我们都没出去。中午我们再食堂吃饭 都很开心! 以上所述是小编给大家介绍的PHP 中使用explode()函数切割字符串为数组的示例,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的! ……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明