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中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
php绘制一条弧线的方法
Jan 24 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
php文件操作相关类实例
2015/06/18 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
在Python中定义和使用抽象类的方法
2016/06/30 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
python线程池threadpool使用篇
2018/04/27 Python
Django rest framework实现分页的示例
2018/05/24 Python
int在python中的含义以及用法
2019/06/27 Python
python安装scipy的步骤解析
2019/09/28 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
python 8种必备的gui库
2020/08/27 Python
python 怎样进行内存管理
2020/11/10 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
自荐信格式的六要素
2013/09/21 职场文书
护理专业毕业生自我鉴定
2013/10/08 职场文书
夜大毕业生自我鉴定
2013/10/31 职场文书
工作表现自我评价
2014/02/08 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
高中生操行评语大全
2014/04/25 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
护士找工作求职信
2014/07/02 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python