php按百分比生成缩略图的代码分享


Posted in PHP onMay 10, 2014

于是翻了一下手册,弄懂几个函数后自己写了一个简单的php生成缩略图的程序。没有用类,我觉得一个函数就能搞定,而且对于新手来说更容易去理解,从而可以帮助到更多的人。

支持按比分比缩略,支持按指定的长宽缩略,默认按百分比。程序中注释已经很详细了,如有问题可在下面留言,欢迎与我交流。

源码如下:

<?php /*
  * param ori_img 原图像的名称和路径
  * param new_img 生成图像的名称
  * param percent 表示按照原图的百分比进行缩略,此项为空时默认按50%
  * param width 指定缩略后的宽度
  * param height 指定缩略后的高度
  * 
  * 注:当 percent width height 都传入值的时候,且percent>0时,优先按照百分比进行缩略
  * by:https://3water.com 更多源码与你分享
  * 温馨提示:使用此功能要在php.ini中开启 gd2
  *
  **/
 function makeThumb($ori_img, $new_img, $percent=50, $width=0, $height=0){
  $original = getimagesize($ori_img); //得到图片的信息,可以print_r($original)发现它就是一个数组
  //$original[2]是图片类型,其中1表示gif、2表示jpg、3表示png
  switch($original[2]){
   case 1 : $s_original = imagecreatefromgif($ori_img);
    break;
   case 2 : $s_original = imagecreatefromjpeg($ori_img);
    break;
   case 3 : $s_original = imagecreatefrompng($ori_img);
    break;
  }
  if($percent > 0){
   $width = $original[0] * $percent / 100;
   $width = ($width > 0) ? $width : 1;
   $height = $original[1] * $percent / 100;
   $height = ($height > 0) ? $height : 1;
  }
  //创建一个真彩的画布
  $canvas = imagecreatetruecolor($width,$height);
  imagecopyresized($canvas, $s_original, 0, 0, 0, 0, $width, $height, $original[0], $original[1]);
  //header("Content-type:image/jpeg");
  //imagejpeg($canvas); //向浏览器输出图片
  $loop = imagejpeg($canvas, $new_img); //生成新的图片
  if($loop){
   echo "OK!<br/>";
  }
 }
 makeThumb("bhsj.jpg","suolue1.jpg",15,0,0); //生成原图15%的缩略图
 makeThumb("bhsj.jpg","suolue2.jpg",0,200,120); //生成宽为100px,高为60px的缩略图
 makeThumb("bhsj.jpg","suolue3.jpg",15,200,120); //生成原图15%的缩略图(参数都填时,百分率优先级大)
?>

 

PHP 相关文章推荐
初品cakephp 入门基础
Feb 16 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
关于PHP语言构造器介绍
Jul 08 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 #PHP
php下获取http状态的实现代码
May 09 #PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 #PHP
简单的php新闻发布系统教程
May 09 #PHP
php下载文件源代码(强制任意文件格式下载)
May 09 #PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 #PHP
win7计划任务定时执行PHP脚本设置图解
May 09 #PHP
You might like
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
Js callBack 返回前一页的js方法
2008/11/30 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
Python模拟三级菜单效果
2017/09/11 Python
python中使用print输出中文的方法
2018/07/16 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
黄河的主人教学反思
2014/02/07 职场文书
建议书怎么写
2014/03/12 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Elasticsearch 基本查询和组合查询
2022/04/19 Python