Home  >  Article  >  Backend Development  >  PHP automatically generates thumbnail implementation code based on URL

PHP automatically generates thumbnail implementation code based on URL

WBOY
WBOYOriginal
2016-07-25 08:52:31810browse
  1. RewriteEngine On
  2. # '-s' (is regular file, with size)
  3. # '-l' (is symbolic link)
  4. # '-d' (is directory)
  5. # 'ornext|OR' (or next condition)
  6. # 'nocase|NC' (no case)
  7. # 'last|L' (last rule)
  8. RewriteCond %{REQUEST_FILENAME} -s [OR]
  9. RewriteCond %{REQUEST_FILENAME} -l [OR]
  10. RewriteCond %{REQUEST_FILENAME} -d
  11. RewriteRule ^.*$ - [NC,L]
  12. RewriteRule ^.*$ createthumb.php?path=%{REQUEST_URI} [NC,L]
复制代码

2、createthumb.php文件:

  1. define('WWW_PATH', dirname(dirname(__FILE__))); // 站点www目录
  2. require(WWW_PATH.'/PicThumb.class.php'); // include PicThumb.class.php
  3. require(WWW_PATH.'/ThumbConfig.php'); // include ThumbConfig.php
  4. $logfile = WWW_PATH.'/createthumb.log'; // 日志文件
  5. $source_path = WWW_PATH.'/upload/'; // 原路径
  6. $dest_path = WWW_PATH.'/supload/'; // 目标路径
  7. $path = isset($_GET['path'])? $_GET['path'] : ''; // 访问的图片URL
  8. // 检查path
  9. if(!$path){
  10. exit();
  11. }
  12. // 获取图片URI
  13. $relative_url = str_replace($dest_path, '', WWW_PATH.$path);
  14. // 获取type
  15. $type = substr($relative_url, 0, strpos($relative_url, '/'));
  16. // 获取config
  17. $config = isset($thumb_config[$type])? $thumb_config[$type] : '';
  18. // 检查config
  19. if(!$config || !isset($config['fromdir'])){
  20. exit();
  21. }
  22. // 原图文件
  23. $source = str_replace('/'.$type.'/', '/'.$config['fromdir'].'/', $source_path.$relative_url);
  24. // 目标文件
  25. $dest = $dest_path.$relative_url;
  26. // 创建缩略图
  27. $obj = new PicThumb($logfile);
  28. $obj->set_config($config);
  29. if($obj->create_thumb($source, $dest)){
  30. ob_clean();
  31. header('content-type:'.mime_content_type($dest));
  32. exit(file_get_contents($dest));
  33. }
  34. ?>
复制代码

3、ThumbConfig.php文件:

  1. $thumb_config = array(
  2. 'news' => array(
  3. 'fromdir' => 'news', // 来源目录
  4. 'type' => 'fit',
  5. 'width' => 100,
  6. 'height' => 100,
  7. 'bgcolor' => '#FF0000'
  8. ),
  9. 'news_1' => array(
  10. 'fromdir' => 'news',
  11. 'type' => 'fit',
  12. 'width' => 200,
  13. 'height' => 200,
  14. 'bgcolor' => '#FFFF00'
  15. ),
  16. 'article' => array(
  17. 'fromdir' => 'article',
  18. 'type' => 'crop',
  19. 'width' => 250,
  20. 'height' => 250,
  21. 'watermark' => WWW_PATH.'/supload/watermark.png'
  22. )
  23. );
  24. ?>
复制代码

访问以下三个路径后会按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



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn