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 用法请查看这里:http://blog.csdn.net/fdipzone/article/details/9316385

需要开启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));
}  

?>

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/PHP/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 图片
, http
, 原理图
, www
, localhost
, PHP原理
RewriteCond
根据url生成缩略图、php 生成缩略图、php生成缩略图函数、php生成视频缩略图、php 缩略图生成类,以便于您获取更多的相关知识。

时间: 2024-12-21 20:04:16

php根据url自动生成缩略图的原理的相关文章

php根据url自动生成缩略图并处理高并发问题

服务器生成缩略图的时机一般分为两种: 1.上传文件时生成 优点:上传时就已经生成需要的缩略图,读取时不需要再判断,减少cpu运算. 缺点:当缩略图尺寸变化时或新增尺寸时,需要重新生成所有的缩略图. 2.访问时生成 优点:1.当有用户访问时才需要生成,没有访问的不用生成,节省空间. 2.当修改缩略图尺寸时,只需要修改设置,无需重新生成所有缩略图. 缺点:当缩略图不存在需要生成时,高并发访问会非常耗服务器资源. 虽然访问时生成会有高并发问题,但其他优点都比第一种方法好,因此只要解决高并发问题就可以.

php 根据url自动生成缩略图并处理高并发问题_php技巧

服务器生成缩略图的时机一般分为两种: 1.上传文件时生成 优点:上传时就已经生成需要的缩略图,读取时不需要再判断,减少cpu运算. 缺点:当缩略图尺寸变化时或新增尺寸时,需要重新生成所有的缩略图. 2.访问时生成 优点:1.当有用户访问时才需要生成,没有访问的不用生成,节省空间. 2.当修改缩略图尺寸时,只需要修改设置,无需重新生成所有缩略图. 缺点:当缩略图不存在需要生成时,高并发访问会非常耗服务器资源. 虽然访问时生成会有高并发问题,但其他优点都比第一种方法好,因此只要解决高并发问题就可以.

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

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

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

利用ASPUPLOAD,ASPJPEG实现图片上传自动生成缩略图及加上水印_应用技巧

今天在站长站看到一网友写的相册程序,功能挺简单的,看到他用了ASPJPEG生成缩略图,不由想起再用上ASPUPLOAD上传,于是花了一个小时时间完善了他的代码. 以下代码均加有简单的注释,如果你看不懂,请先看ASPJPEG以及ASPUPLOAD的说明文档(E文,希望有心理准备),看不懂的可以问我. 以下是代码:  复制代码 代码如下: <%  if session("admin")<>"on" then  Response.Redirect&quo

asp.net中使kindeditor自动生成缩略图

,于是,花了一点时间,对它的上传图片的功能进行了改写,废话少说,直接上代码 图片上传功能调用的是:upload_json.ashx  代码如下 复制代码 using System; using System.Collections; using System.Web; using System.IO; using System.Globalization; using LitJson; public class Upload : IHttpHandler {     private HttpCo

php 上传图片自动生成缩略图

 代码如下 复制代码 <form action="uploads.php" method="post" enctype="multipart/form-data">  <input type='file' name='image'><br>  <input type='submit' name='sub' value='提交'> </form> uploads.php文件 <?ph

asp图片上传后用aspjpeg自动生成缩略图

 Aspjpeg 功能设置 Set Jpeg = Server.CreateObject("Persits.Jpeg") ' 获取源图片路径 Path = Server.MapPath("uploadimages/")&"/"&FileName ' 打开源图片 Jpeg.Open Path ' 设定生成缩略图细节 这里有很多种设定方法 下面的方法是先判断宽高比 然后按比例缩放 If Jpeg.OriginalWidth / Jpe

WordPress上传图片禁止自动生成缩略图

用管理账号登陆后台,找到设置→媒体,将媒体选项里面的图片大小下面的三个尺寸选项全部修改为0,然后保存就可以了. 需要关闭缩略图功能在"后台设置(Setting)--媒体(Miscellaneous)"里将缩略图尺寸全部设置为0像素就可以禁止缩略图的生成了.