php图片生成缩略图_php实现根据url自动生成缩略图的方法
本文实例讲述了php实现根据url自动生成缩略图的方法,是非常实用的功能。分享给大家供大家参考。具体方法如下:
原理:设置apache rewrite ,当图片不存在时,调用php创建图片。
例如:
原图路径为:http://localhost/upload/news/2013/07/21/1.jpg
缩略图路径为:http://localhost/supload/news/2013/07/21/1.jpg
当访问 http://localhost/supload/news/2013/07/21/1.jpg 时,如图片存在,则显示图片。否则,调用createthumb.php生成图片。
目录结构如下:
www/PicThumb.class.php
www/ThumbConfig.php
www/upload/news/2013/07/21/1.jpg
www/upload/article/2013/07/21/2.jpg
www/supload/.htaccess
www/supload/watermark.png
www/supload/createthumb.php
http://localhost/ 指向 www目录
需要开启apache rewrite:
sudo a2enmod rewrite
.htaccess文件如下:
RewriteEngine On
# '-s' (is regular file, with size)
# '-l' (is symbolic link)
# '-d' (is directory)
# 'ornext|OR' (or next condition)
# 'nocase|NC' (no case)
# 'last|L' (last rule)
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ createthumb.php?path=%{REQUEST_URI} [NC,L]
createthumb.php文件如下:
define('WWW_PATH', dirname(dirname(__FILE__))); // 站点www目录
require(WWW_PATH.'/PicThumb.class.php'); // include PicThumb.class.php
require(WWW_PATH.'/ThumbConfig.php'); // include ThumbConfig.php
$logfile = WWW_PATH.'/createthumb.log'; // 日志文件
$source_path = WWW_PATH.'/upload/'; // 原路径
$dest_path = WWW_PATH.'/supload/'; // 目标路径
$path = isset($_GET['path'])? $_GET['path'] : ''; // 访问的图片URL
// 检查path
if(!$path){
exit();
}
// 获取图片URI
$relative_url = str_replace($dest_path, '', WWW_PATH.$path);
// 获取type
$type = substr($relative_url, 0, strpos($relative_url, '/'));
// 获取config
$config = isset($thumb_config[$type])? $thumb_config[$type] : '';
// 检查config
if(!$config || !isset($config['fromdir'])){
exit();
}
// 原图文件
$source = str_replace('/'.$type.'/', '/'.$config['fromdir'].'/', $source_path.$relative_url);
// 目标文件
$dest = $dest_path.$relative_url;
// 创建缩略图
$obj = new PicThumb($logfile);
$obj->set_config($config);
if($obj->create_thumb($source, $dest)){
ob_clean();
header('content-type:'.mime_content_type($dest));
exit(file_get_contents($dest));
}
?>
ThumbConfig.php文件如下:
$thumb_config = array(
'news' => array(
'fromdir' => 'news', // 来源目录
'type' => 'fit',
'width' => 100,
'height' => 100,
'bgcolor' => '#FF0000'
),
'news_1' => array(
'fromdir' => 'news',
'type' => 'fit',
'width' => 200,
'height' => 200,
'bgcolor' => '#FFFF00'
),
'article' => array(
'fromdir' => 'article',
'type' => 'crop',
'width' => 250,
'height' => 250,
'watermark' => WWW_PATH.'/supload/watermark.png'
)
);
?>
访问这三个路径后会按config自动生成缩略图
http://localhost/supload/news/2013/07/21/1.jpg
http://localhost/supload/news_1/2013/07/21/1.jpg
http://localhost/supload/article/2013/07/21/2.jpg
本文所述实例完整代码点击此处本站下载。
希望本文所述对大家的php程序设计有所帮助。
php图片生成缩略图_php实现根据url自动生成缩略图的方法相关推荐
- 从图片到涂鸦:高品质涂鸦的自动生成
Photo-Sketching: Inferring Contour Drawings from Images 从图片到涂鸦:高品质涂鸦的自动生成 项目地址:从图片到涂鸦:高品质涂鸦的自动生成 论文: ...
- java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
压缩包 : 试卷自动生成系统.rar 列表 试卷自动生成系统/.classpath 试卷自动生成系统/.project 试卷自动生成系统/bin/Db/Sql.class 试卷自动生成系统/bin/f ...
- freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...
TableGo_20191026 v6.6.6 正式发布,此次版本更新如下: 1.新增通过自定义模板生成Word文档的功能,可以使用FreeMarker模板生成自定义格式的数据库文档. 2.新增 Sw ...
- HTML5自动生成相框,HTML5拖放API实现自动生成相框功能
实现功能: 将桌面图片拖入指定地方,生成相框和相关信息. 相框需要自己配置,设置为背景,在CSS中设置. 效果如图: html部分: H5拖放API之图片相框效果 > 请将图片拖放至此处 CSS ...
- mysql 自动生成mapper_Spring Boot整合mybatis并自动生成mapper和实体实例解析
最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架.于是我准备研究下Spring Boot和mybatis的整合. ...
- doc自动生成html,java web应用中自动生成文章html页面的实现.doc
java web应用中自动生成文章html页面的实现 java web应用中自动生成文章html页面的实现 2009-11-09 00:24:15 标签:web开发,页面转换 [推送到技术圈] 版权声 ...
- 随机密码生成python_让“全家福”更加随机 —— 自动生成照片布局之Python实现...
高考已经结束,先预祝各位考生成绩如意! 虽然在学校里工作了那么久,却没有留意过从哪一年开始高考由七月改到了六月.只是每到南风吹起.凤凰花开的时节,便会发现朋友圈里挂出了好多毕业照,于是就会想起1996 ...
- 自动生成python接口文档_Django自动生成Swagger接口文档
Django自动生成Swagger接口文档 1. 前言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次 ...
- 织梦获取文章页第一张图片为缩略图,织梦无法自动获取缩略图
织梦无法自动获取文章缩略图的原因 通常是我们在系统参数中设置的默认缩略图的尺寸过大,织梦在获取图片时会自动对文章内的图片进行缩小裁剪,如果我们设置的默认缩略图片尺寸过大时,获取文章内容的第一张图片的结 ...
最新文章
- IIS中的 Asp.Net Core 和 dotnet watch
- JVM源码---教你傻瓜式编译openjdk7(JAVA虚拟机爱好者必看)
- 方形物体绕中心旋转的扭力_转轴扭力测试方案
- wcf学习(一):预览
- Oracle账户的umask,AIX的Umask
- call及apply的用法理解
- jpeglib画质的代码分析
- 巅峰对决 竞逐百万大赛 | 2019数字中国创新大赛第二批赛题强势来袭
- 使用链接时间代码生成
- 【唯美日出win7热门主题】
- python xy 官网_zwPython,字王集成式python开发平台,比pythonXY更强大、更方便。
- EXCEL表格将两列数据进行排列组合
- Windows Edge浏览器右键菜单透明、难以分辨问题的解决办法
- Java基础之《netty(28)—TCP粘包拆包原理》
- 数据科学和机器学习中的优化理论与算法(下)
- Android面试题(含答案)
- aspx连接mysql木马_让你变成ASP木马高手_安全教程_脚本之家
- 机器学习可视化技术(Towards Data Science)
- php体育网站模板,运动健身企业的网站模板
- 通过ContentProvider实现获取手机联系人
热门文章
- android 遮罩 进度条,bootstrap创建带遮罩层的进度条
- linux 复制代码 多出了很多空格_最基础Linux(一)——简单命令行操作
- php的关系数据库,php – 从关系数据库到非关系数据库的数据规范化的最佳实践...
- 修改目录标题层级_关键词所在页面的层级越高权重越大
- python循环顶帖_python中的循环
- mongodb和mysql中自动增长id_MongoDB 自动增长
- java 多线程 临界区_【Java并发性和多线程】竞态条件与临界区
- python随机图片api_抓取随机图片
- oracle数字日期43841怎么转,安装0racle已崩溃,求助大佬
- h5页面移动端的社会化分享_Adobe年尾续运H5页面