作家
登录

nodejs和php实现图片访问实时处理

作者: 来源: 2017-11-21 15:09:12 阅读 我要评论

  •   } 
  •   return bool; 
  •  
  • URL重写 这里Nginx主如果做一个URL重写和反向代劳的功能,设备如下所示:

    1. location ~ /upload/{ 
    2.   if ($request_uri ~* ^/upload/(.+)_(\d+)x(\d+)\.(jpg|png|gif)$) { 
    3.     set $src $1; 
    4.     set $w $2; 
    5.     set $h $3; 
    6.     set $t $4; 
    7.     rewrite . /resize?src=http://developer.51cto.com/art/201711/$src&w=$w&h=$h&type=$t break;
    8.   } 
    9.   proxy_pass    http://127.0.0.1:3000; 
    10.  

    这里解释一下:Nginx监听本地的80端口,Node.js监听的是3000端口。当用户拜访类似http://127.0.0.1/upload/147332819224704_400x300.jpg的地址时,便会被代劳到http://127.0.0.1:3000/resize?src=http://developer.51cto.com/art/201711/147332819224704&w=400&h=300&type=jpg拜访,看起来像是拜访一张图片,其实不然。 图片及时处理 我们在Node.js中及时处理图片,进行缩放、模糊、水印等操作,之后将其缓存起来并输出到浏览器。Node.js自身API并不善于图片的处理,我们可以借助第三方类库来实现,这里推荐GraphicsMagick或ImageMagick,应用它们之前先安装gm模块: npm install gm --save 接着便可以应用GraphicsMagick了,该模块的API可以参考GM模块API介绍。图片处理的实现如下:

    如上代码所示,当用户拜访http://127.0.0.1/upload/147332819224704_400x300.jpg时,如不雅147332819224704这张图片存在,且400x300这个尺寸也存在,则直接输出这张图片,如不存在,则生成一张该尺寸的图片保存并输出到浏览器。如不雅供给的尺寸超出了图片的原始尺寸,则直接输出原图。我们不仅可以修改尺寸,也可以进行模糊、取水印等操作,这里就不多介绍了。 如不雅不消Nginx反向代劳也是可以的,应用express的┞俘则路由实现,如下所示:

    1. app.get(/^\/upload\/(.+)_(\d+)x(\d+)\.(jpg|png|gif)$/,function(req,res){ 
    2.   var src = RegExp.$1, 
    3.     width = RegExp.$2, 
    4.     height = RegExp.$3, 
    5.     type = RegExp.$4; 
    6.   var imgFile = uploadDir+src+'.'+type; 
    7.   var notFound = '不好意思,该图片不存在或已被删除!'
    8.   var thumb = getThumbImg(src,width,height,type); 
    9.   if(isFileExists(imgFile)){ 
    10.     if(isFileExists(thumb)){ 
    11.       res.type(type).sendFile(__dirname+'/'+thumb); 
    12.     }else
    13.       imgResize(imgFile,thumb,width,height,type,res); 
    14.     } 
    15.   }else
    16.     res.status(404).send(notFound); 
    17.   } 
    18. });  

    2、Apache+PHP实现 起首得搭建windows下php开辟情况,我本人用的是apache2+php5.6,具体的搭建步调网上一大年夜堆,便不再累述。 开启apache rewrite功能 起首我们得开启Apache rewrite模块功能,去掉落设备文件http.conf中LoadModule rewritemodule modules/modrewrite.so前面的注释,然后设置Directory块下AllowOverride All,可能有多处,接侧重启Apache办事。 设备.htaccess文件 在DocumentRoot目次下,新建.htaccess文件,如不雅创建不了,可以先创建一个文本,然后另存为,在弹出的对话框文件名处填写".htaccess"即可。之后,编写URL重写规矩,如下所示:

    1. RewriteEngine on 
    2. RewriteCond %{REQUEST_FILENAME} !-f 

        推荐阅读

        报告称运营问题导致运营商远离NFV

      Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践Cartesian针对40多个访谈和跨越100个受访者的在线查询拜访促成其宣布了《收集的将来:应对虚拟范畴的变革》的申报,受访>>>详细阅读


      本文标题:nodejs和php实现图片访问实时处理

      地址:http://www.17bianji.com/lsqh/39096.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)