php实现根据url自动生成缩略图的方法


Posted in PHP onSeptember 23, 2014

本文实例讲述了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目录

PicThumb.class.php 用法请查看这里:https://3water.com/article/55530.htm

需要开启apache rewrite:

sudo a2enmod rewrite

.htaccess文件如下:

<IfModule mod_rewrite.c> 
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] 
 
</IfModule>

createthumb.php文件如下:

<?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文件如下:

<?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版(5)
Oct 09 PHP
PHP生成便于打印的网页
Oct 09 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
解析Extjs与php数据交互(增删查改)
Jun 25 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 #PHP
PHP图片库imagemagick安装方法
Sep 23 #PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 #PHP
php实现的支持断点续传的文件下载类
Sep 23 #PHP
php实现的click captcha点击验证码类实例
Sep 23 #PHP
PHP实现自动登入google play下载app report的方法
Sep 23 #PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 #PHP
You might like
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
js实现返回顶部效果
2017/03/10 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
Python中functools模块的常用函数解析
2016/06/30 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
保研推荐信
2014/05/09 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2014年招生工作总结
2014/11/26 职场文书
入党转正申请书范文
2019/05/20 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python