时间:2016-02-26 21:42 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是服务器系列之:【Nginx配合php实现生成实时缩略图功能】,下面是详细的分享!
Nginx配合php实现生成实时缩略图功能
$file=$_SERVER ['REQUEST_URI'];//请求字串 /file/abc.jpg.w320.jpg
$desfile=$_SERVER ['DOCUMENT_ROOT'] . $file; //目标目标路径 /var/www/http/file/abc.jpg.w320.jpg
$dirname=dirname ( $desfile ) . "/";
$filename=basename ( $desfile );
if (preg_match ( "/([^\.]+\.(png|jpg|jpeg|gif))\.w([\d]+)\.(jpg)/i", $filename, $m )) {
$srcfile=$dirname . $m [1];
$width=$m [3]; //匹配出输出文件宽度
if (in_array ( $width, array ( //只产生202和320宽度的文件
202,
320
) ) && file_exists ( $srcfile )) { //而且文件不存在
thumbnail ( $srcfile, $desfile, $width );
}
}
function thumbnail($src, $des, $width) {
ob_start ();//开始截获输出流
$imageinfos=getimagesize ( $src );
$ext=strtolower ( pathinfo ( $src, 4 ) );
if ($imageinfos [2]==1) {
$im=imagecreatefromgif ( $src );
} elseif ($imageinfos [2]==2) {
$im=imagecreatefromjpeg ( $src );
} elseif ($imageinfos [2]==3) {
$im=imagecreatefrompng ( $src );
}
if (isset ( $im )) {
$height=$imageinfos [1] * $width / $imageinfos [0];
$dst_img=ImageCreateTrueColor ( $width, $height );
imagesavealpha ( $dst_img, true );
$trans_colour=imagecolorallocatealpha ( $dst_img, 0, 0, 0, 127 );
imagefill ( $dst_img, 0, 0, $trans_colour );
imagecopyresampled ( $dst_img, $im, 0, 0, 0, 0, $width, $height, $imageinfos [0], $imageinfos [1] );
header ( 'content-type:image/jpg' );
imagejpeg ( $dst_img, null, 90 );//输出文件流,90--压缩质量,100表示最高质量。
@imagedestroy ( $im );
@imagedestroy ( $dst_img );
} else {
echo @file_get_contents ( $src );
}
$content=ob_get_contents ();//获取输出流
ob_end_flush ();//输出流到网页,保证第一次请求也有图片数据放回
@file_put_contents ( $des, $content );//保存文件
}
?>
以上就是关于Nginx配合php实现生成实时缩略图功能的服务器维护教程分享,更多电脑教程请移步到>>电脑教程频道。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
