php實現根據url自動產生縮圖的方法,url自動產生_PHP教程

來源:互聯網
上載者:User

php實現根據url自動產生縮圖的方法,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/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://www.bkjia.com/article/55530.htm

需要開啟apache rewrite:

sudo a2enmod rewrite 

.htaccess檔案如下:

 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]  

createthumb.php檔案如下:

<?phpdefine('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程式設計有所協助。


url實現縮圖

需要php環境支援GD庫。

$img_name=$_GET['img']; //擷取查詢字串

$src_img=imagecreatefromjpeg($img_name);

$ow=imagesx($src_img);
$oh=imagesy($src_img);

$desc_img=imagecreate(400,300);

imagecopyresized($desc_img,$src_img,0,0,0,0,400,300,$ow,$oh);

imagejpeg($desc_img);

imagedestroy($desc_img);
imagedestroy($src_img);

?>

以上代碼可以根據一個圖片產生400*300的縮圖,如:

www.xx.com/image.php?img=1.jpg

要求1.jpg必須存在,大小任意。並且1.jpg和image.php在同一目錄下。

www.xx.com/image.php?img=upload2009/1.jpg

也可以,不用改了,就用上面的。反正$img_name變數就是圖片的url。你自己根據實際情況看著改吧。
 

php自動產生縮圖代碼

給你個函數吧
// *****產生縮圖*****
// 只考慮jpg,png,gif格式
// $srcImgPath 源圖象路徑
// $targetImgPath 靶心圖表象路徑
// $targetW 靶心圖表象寬度
// $targetH 靶心圖表象高度
function makeThumbnail($srcImgPath,$targetImgPath,$targetW,$targetH)
{
$imgSize = GetImageSize($srcImgPath);
$imgType = $imgSize[2];
//@ 使函數不向頁面輸出錯誤資訊
switch ($imgType)
{
case 1:
$srcImg = @ImageCreateFromGIF($srcImgPath);
break;
case 2:
$srcImg = @ImageCreateFromJpeg($srcImgPath);
break;
case 3:
$srcImg = @ImageCreateFromPNG($srcImgPath);
break;
}
//取源圖象的寬高
$srcW = ImageSX($srcImg);
$srcH = ImageSY($srcImg);
if($srcW>$targetW || $srcH>$targetH)
{
$targetX = 0;
$targetY = 0;
if ($srcW > $srcH)
{
$finaW=$targetW;
$finalH=round($srcH*$finaW/$srcW);
$targetY=floor(($targetH-$finalH)/2);
}
else
{
$finalH=$targetH;
$finaW=round($srcW*$finalH/$srcH);
$targetX=floor(($targetW-$finaW)/2);
}
//function_exists 檢查函數是否已定義
//ImageCreateTrueColor 本函數需要GD2.0.1或更高版本
if(function......餘下全文>>
 

http://www.bkjia.com/PHPjc/882893.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/882893.htmlTechArticlephp實現根據url自動產生縮圖的方法,url自動產生 本文執行個體講述了php實現根據url自動產生縮圖的方法,是非常實用的功能。分享給大家供...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.