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 相关文章推荐
IStream与TStream之间的相互转换
Aug 01 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
PHP中预定义的6种接口介绍
May 12 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
心理健康活动总结
2014/04/30 职场文书
入党推优材料
2014/06/02 职场文书
教师节老师寄语
2015/05/28 职场文书
上甘岭观后感
2015/06/10 职场文书
诚信考试主题班会
2015/08/17 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
python数字类型和占位符详情
2022/03/13 Python