基于PHP服務(wù)端圖片生成縮略圖的方法詳解
更新時(shí)間:2013年06月20日 16:34:33 作者:
本篇文章是對(duì)PHP服務(wù)端圖片生成縮略圖的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
復(fù)制代碼 代碼如下:
<?php
//定義縮略圖片尺寸
$picSize = array(
'100_100'=> 1,
'200_100'=> 1
);
$imagePath = "../image/";
function parseUrl($url){
preg_match("/(?P<name>[\w\d]+)_w(?P<width>\d+)_h(?P<height>\d+)\.(?P<ext>\w+)/",$url,$match);
return $match;
}
$urlArr = explode("/",$_SERVER['REQUEST_URI']);
$imgName = $urlArr[count($urlArr)-1];
$picInfo = parseUrl($imgName);
//錯(cuò)誤尺寸
if(empty($picInfo['width']) || empty($picInfo['height']) ||
!array_key_exists($picInfo['width'].'_'.$picInfo['height'],$picSize)) die('不存在該尺寸圖片');
$originalPic = $imagePath.$picInfo['name'].'/'.$picInfo['name'].'.'.$picInfo['ext'];
//原始圖不存在
if(!file_exists($originalPic)) die("圖片不存在!");
/**
*等比例壓縮圖片
*/
switch($picInfo['ext']){
case 'jpg':
$orgImg = ImageCreateFromJpeg($originalPic);
break;
default:
break;
}
$owidth = ImageSX($orgImg); //原始尺寸
$oheight = ImageSY($orgImg);
$tW = $picInfo['width'];
$tH = $picInfo['height'];
//獲取縮略圖尺寸
if($owidth/$oheight > $tW/$tH){
$tH = intval($tW * $oheight/$owidth);
}else{
$tW = intval($tH * $owidth/$oheight);
}
//生成背景圖
$new_img = ImageCreateTrueColor($picInfo['width'], $picInfo['height']);
$bgColor = imagecolorallocate($new_img,255,255,255);
if (!@imagefilledrectangle($new_img, 0, 0, $picInfo['width']-1, $picInfo['height']-1, $bgColor)) {
echo "無法創(chuàng)建背景圖"; //@todo記錄日志
exit(0);
}
if (!@imagecopyresampled($new_img, $orgImg, ($picInfo['width']-$tW)/2, ($picInfo['height']-$tH)/2, 0, 0, $tW, $tH, $owidth, $oheight)) {
echo "生成圖片失敗";
exit(0);
}
//生成圖片
ob_start();
imagejpeg($new_img);
$_newImg = ob_get_contents();
ob_end_clean();
file_put_contents($imagePath.$picInfo['name']."/".$imgName, $_newImg);
header("Content-type:image/jpeg; charset=utf-8");
imagejpeg($new_img);
?>
使用時(shí)候綁定apache conf 的 documentError 404 的handler 為此文件。。
您可能感興趣的文章:
- php實(shí)現(xiàn)上傳圖片生成縮略圖示例
- 使用gd庫實(shí)現(xiàn)php服務(wù)端圖片裁剪和生成縮略圖功能分享
- php圖片的裁剪與縮放生成符合需求的縮略圖
- php實(shí)現(xiàn)按指定大小等比縮放生成上傳圖片縮略圖的方法
- PHP用GD庫生成高質(zhì)量的縮略圖片
- jquery+php+ajax顯示上傳進(jìn)度的多圖片上傳并生成縮略圖代碼
- 使用PHP生成圖片的縮略圖的方法
- 基于GD2圖形庫的PHP生成圖片縮略圖類代碼分享
- PHP Imagick完美實(shí)現(xiàn)圖片裁切、生成縮略圖、添加水印
- php上傳圖片生成縮略圖(GD庫)
- PHP批量生成圖片縮略圖的方法
- php實(shí)現(xiàn)圖片上傳并利用ImageMagick生成縮略圖
- php生成圖片縮略圖功能示例
相關(guān)文章
PHP異常Parse error: syntax error, unexpected T_VAR錯(cuò)誤解決方法
在PHP中根本不需要使用var聲明的,但是當(dāng)一個(gè)變量作為一個(gè)類的成員變量的時(shí)候,使用var還是沒有問題的2014-05-05從PHP $_SERVER相關(guān)參數(shù)判斷是否支持Rewrite模塊
這篇文章主要介紹了如何通過判斷PHP $_SERVER相關(guān)參數(shù)來驗(yàn)證頁面是否重定向,但這只是在Apache環(huán)境下才有效,下面來具體的看下2013-09-09PHP應(yīng)用跨時(shí)區(qū)功能的實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于PHP應(yīng)用跨時(shí)區(qū)功能的實(shí)現(xiàn)方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03詳解php 使用Callable Closure強(qiáng)制指定回調(diào)類型
這篇文章主要介紹了詳解php 使用Callable Closure強(qiáng)制指定回調(diào)類型的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10淺析php中array_map和array_walk的使用對(duì)比
這篇文章給大家先是詳細(xì)的介紹了array_map()和array_walk()的語法、參數(shù)以及注意事項(xiàng),而后又給大家詳細(xì)的介紹了其中的關(guān)鍵點(diǎn),文中介紹的很詳細(xì),相信會(huì)對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們可以參考借鑒,感興趣的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11