Home >Backend Development >PHP Tutorial >How to automatically generate thumbnails based on url through php
Principle: Set apache rewrite, and when the picture does not exist, call php to create the picture.
For example
The original image path is: http://localhost/upload/news/2013/07/21/1.jpg
The thumbnail image path is: http://localhost/supload/news/2013 /07/21/1.jpg
When accessing http://localhost/supload/news/2013/07/21/1.jpg, if the picture exists, the picture will be displayed. Otherwise, call createthumb.php to generate the image.
The directory structure is as follows:
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/ points to the www directory
PicThumb.class.php usage please check here
needs to enable 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
This article explains how to automatically generate thumbnails based on url through php. For more related content, please pay attention to php Chinese net.
Related recommendations:
Introduction to the method of using php output_buffering cache
How to implement BigPipe block output through php
How to use fsockopen GET/POST to submit forms and upload files through php
The above is the detailed content of How to automatically generate thumbnails based on url through php. For more information, please follow other related articles on the PHP Chinese website!