千家信息网

Nginx怎么配合php实现生成实时缩略图功能

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"Nginx怎么配合php实现生成实时缩略图功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Nginx怎么配合php实现生成实时缩
千家信息网最后更新 2026年11月01日Nginx怎么配合php实现生成实时缩略图功能

这篇文章主要讲解了"Nginx怎么配合php实现生成实时缩略图功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Nginx怎么配合php实现生成实时缩略图功能"吧!

nginx配置:

复制代码 代码如下:

#假设,服务器上面有一个文件:abc.jpg,通过http://filefs.domain.com/file/abc.jpg能够访问到原图。其#实一般的,我们在数据库里面也就保存了"/file/abc.jpg"这部分内容。
#现在,我们要实现通过http://filefs.domain.com/file/abc.jpg.w320.jpg由服务器自动产生#abc.jpg.w320.jpg(w320,320px的宽度)这个缩略图。并返回图片数据。
#要满足以下两个条件:
# 1.如果abc.jpg.w320.jpg存在,则不重新产生图片
# 2.如果不存在,则在同一次的请求中,返回图片数据,和保存图片文件到服务器。
server {
listen 80;
server_name filefs.domain.com;

root /var/www/http/filefs.domain.com;
location / {
index index.html index.htm;
}

location ~ \.(png|jpg|jpeg|gif)$ {
#如果文件不存在,则rewrite到产生图片的脚本文件autoimg.php
if (!-f $request_filename) {
rewrite ^/.*$ /autoimg.php;
expires max;
}
#如果文件存在,则设置过期时间,关闭访问日志
if ( -f $request_filename ) {
expires max;
access_log off;
}
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ autoimg.php$ {#安全性考虑,文件服务器,只这个脚本文件的范围提交给php处理
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param script_filename /var/www/http/filefs.domain.com$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}
}

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 );
}
}

/**
* 生成缩略图
*
* @param 源 $src
* @param 缩放后的宽带 $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实现生成实时缩略图功能"的内容了,经过本文的学习后,相信大家对Nginx怎么配合php实现生成实时缩略图功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文件 图片 代码 输出 功能 成实 数据 服务器 服务 内容 宽度 学习 目标 脚本 质量 最高 安全 两个 原图 安全性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡 科技互联网企业 美国互联网保险保险科技 互联网科技行业发展 有马互联网科技 安徽鑫晟辉互联网科技 伴你行互联网科技有限公司 互联网高科技企业 宁波青枫互联网科技有限公司 黑科技闪耀互联网之光 晓花互联网科技有限公司网址 互联网与医疗科技 中科明德北京互联网科技 山东子淼互联网科技有限公司 南通创西澳互联网科技有限公司 上海创道互联网络科技有限公司 上海乐五互联网科技有限公司 陕西九四连强互联网科技有限公司 保山互联网科技靠谱吗 互联网科技创业计划的风险分析 万易互联网科技 齐家互联网科技有限公司 随着互联网科技发展 互联网新科技动漫ppt素材 广州新华互联网科技学校电竞方面 东营紫格互联网科技 西安有哪些互联网高科技企业 萌小萌互联网科技河南有限公司 互联网科技收购价值 互联网科技创新方面的资料
0