本文实例讲述了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自动生成缩略图的方法相关推荐

  1. 从图片到涂鸦:高品质涂鸦的自动生成

    Photo-Sketching: Inferring Contour Drawings from Images 从图片到涂鸦:高品质涂鸦的自动生成 项目地址:从图片到涂鸦:高品质涂鸦的自动生成 论文: ...

  2. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...

    压缩包 : 试卷自动生成系统.rar 列表 试卷自动生成系统/.classpath 试卷自动生成系统/.project 试卷自动生成系统/bin/Db/Sql.class 试卷自动生成系统/bin/f ...

  3. freemarker mysql 生成bean_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)...

    TableGo_20191026 v6.6.6 正式发布,此次版本更新如下: 1.新增通过自定义模板生成Word文档的功能,可以使用FreeMarker模板生成自定义格式的数据库文档. 2.新增 Sw ...

  4. HTML5自动生成相框,HTML5拖放API实现自动生成相框功能

    实现功能: 将桌面图片拖入指定地方,生成相框和相关信息. 相框需要自己配置,设置为背景,在CSS中设置. 效果如图: html部分: H5拖放API之图片相框效果 > 请将图片拖放至此处 CSS ...

  5. mysql 自动生成mapper_Spring Boot整合mybatis并自动生成mapper和实体实例解析

    最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架.于是我准备研究下Spring Boot和mybatis的整合. ...

  6. doc自动生成html,java web应用中自动生成文章html页面的实现.doc

    java web应用中自动生成文章html页面的实现 java web应用中自动生成文章html页面的实现 2009-11-09 00:24:15 标签:web开发,页面转换 [推送到技术圈] 版权声 ...

  7. 随机密码生成python_让“全家福”更加随机 —— 自动生成照片布局之Python实现...

    高考已经结束,先预祝各位考生成绩如意! 虽然在学校里工作了那么久,却没有留意过从哪一年开始高考由七月改到了六月.只是每到南风吹起.凤凰花开的时节,便会发现朋友圈里挂出了好多毕业照,于是就会想起1996 ...

  8. 自动生成python接口文档_Django自动生成Swagger接口文档

    Django自动生成Swagger接口文档 1. 前言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次 ...

  9. 织梦获取文章页第一张图片为缩略图,织梦无法自动获取缩略图

    织梦无法自动获取文章缩略图的原因 通常是我们在系统参数中设置的默认缩略图的尺寸过大,织梦在获取图片时会自动对文章内的图片进行缩小裁剪,如果我们设置的默认缩略图片尺寸过大时,获取文章内容的第一张图片的结 ...

最新文章

  1. IIS中的 Asp.Net Core 和 dotnet watch
  2. JVM源码---教你傻瓜式编译openjdk7(JAVA虚拟机爱好者必看)
  3. 方形物体绕中心旋转的扭力_转轴扭力测试方案
  4. wcf学习(一):预览
  5. Oracle账户的umask,AIX的Umask
  6. call及apply的用法理解
  7. jpeglib画质的代码分析
  8. 巅峰对决 竞逐百万大赛 | 2019数字中国创新大赛第二批赛题强势来袭
  9. 使用链接时间代码生成
  10. 【唯美日出win7热门主题】
  11. python xy 官网_zwPython,字王集成式python开发平台,比pythonXY更强大、更方便。
  12. EXCEL表格将两列数据进行排列组合
  13. Windows Edge浏览器右键菜单透明、难以分辨问题的解决办法
  14. Java基础之《netty(28)—TCP粘包拆包原理》
  15. 数据科学和机器学习中的优化理论与算法(下)
  16. Android面试题(含答案)
  17. aspx连接mysql木马_让你变成ASP木马高手_安全教程_脚本之家
  18. 机器学习可视化技术(Towards Data Science)
  19. php体育网站模板,运动健身企业的网站模板
  20. 通过ContentProvider实现获取手机联系人

热门文章

  1. android 遮罩 进度条,bootstrap创建带遮罩层的进度条
  2. linux 复制代码 多出了很多空格_最基础Linux(一)——简单命令行操作
  3. php的关系数据库,php – 从关系数据库到非关系数据库的数据规范化的最佳实践...
  4. 修改目录标题层级_关键词所在页面的层级越高权重越大
  5. python循环顶帖_python中的循环
  6. mongodb和mysql中自动增长id_MongoDB 自动增长
  7. java 多线程 临界区_【Java并发性和多线程】竞态条件与临界区
  8. python随机图片api_抓取随机图片
  9. oracle数字日期43841怎么转,安装0racle已崩溃,求助大佬
  10. h5页面移动端的社会化分享_Adobe年尾续运H5页面