<?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);
//错误尺寸
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 \"无法创建背景图\"; //@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);
?>
使用时候绑定apache conf 的 documentError 404 的handler 为此文件。。