这个功能,有点类似图片站点分离的操作,就是将图片单独架设在一台服务器上,有兴趣的朋友,好好研究下吧。
代码如下:
复制代码 代码示例:
/**
* 缩略图片 Linux图片服务器
* edit
*/
$picID=$_GET['imgID'];
$picTypes=".".$_GET['imgType'];
$picWidth=$_GET['ImgWidth'];
if($picID!="")
{
//请求的是小图
if($picWidth>0){
//如果小图存在
if(file_exists($picID."_".$picWidth.$picTypes))
{
outputImg($picID."_".$picWidth.$picTypes);
}else
{
if(file_exists($picID."_0".$picTypes)){
//如果不存在小图直接生成小图
resizeImg($picID."_0".$picTypes,$picWidth,$picWidth,$picID."_".$picWidth.$picTypes);
//输出
outputImg($picID."_".$picWidth.$picTypes);
}else
{
//如果大图不存在
resizeImg('noDefaultImage.gif',$picWidth,$picWidth,noDefaultImage."_".$picWidth.".gif");
//输出
outputImg($picID."_".$picWidth.$picTypes);
}
}
}
//判断文件是否存在大图
if(file_exists($picID."_0".$picTypes))
{
$img_file = $picID."_0".$picTypes;
outputImg($img_file);
}
else
{
//如果不存在图片
$img_file = 'noDefaultImage.gif';
outputImg($img_file);
}
}
//输出图片
function outputImg($img_file)
{
$fp = fopen($img_file, 'rb');
$content = fread($fp, filesize($img_file)); //二进制数据
fclose($fp);
header('Content-Type: image/gif');
echo $content;
}
/**
* 生成缩略图
* $srcName----为原图片路径
* $newWidth,$newHeight----分别缩略图的最大宽,高
* $newName----为缩略图文件名(含路径)
* @param string $srcName
* @param int $newWidth
* @param int $newHeight
* @param string $newName
* return viod
*/
function resizeImg($srcName,$newWidth,$newHeight,$newName="")
{
if($newName=="")
{
$nameArr=explode('.',$srcName);
$expName=array_pop($nameArr);
$expName=$expName;
array_push($nameArr,$expName);
$newName = implode('.',$nameArr);
}
$info = "";
$data = getimagesize($srcName,$info);
switch ($data[2])
{
case 1:
if(!function_exists("imagecreatefromgif")){
echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!返回";
exit();
}
$im = ImageCreateFromGIF($srcName);
break;
case 2:
if(!function_exists("imagecreatefromjpeg")){
echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回";
exit();
}
$im = ImageCreateFromJpeg($srcName);
break;
case 3:
$im = ImageCreateFromPNG($srcName);
break;
}
$srcW=ImageSX($im);
$srcH=ImageSY($im);
$newWidthH=$newWidth/$newHeight;
$srcWH=$srcW/$srcH;
if($newWidthH<=$srcWH){
$ftoW=$newWidth;
$ftoH=$ftoW*($srcH/$srcW);
}
else{
$ftoH=$newHeight;
$ftoW=$ftoH*($srcW/$srcH);
}
if($srcW>$newWidth||$srcH>$newHeight)
{
if(function_exists("imagecreatetruecolor"))
{
@$ni = ImageCreateTrueColor($ftoW,$ftoH);
if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
else
{
$ni=ImageCreate($ftoW,$ftoH);
ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
}
else
{
$ni=ImageCreate($ftoW,$ftoH);
ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
if(function_exists('imagejpeg')) ImageJpeg($ni,$newName);
else ImagePNG($ni,$newName);
ImageDestroy($ni);
}
ImageDestroy($im);
}
?>