Nginx Proxy cache + Perl + ImageMagick 做Wap站图片适配 实时压缩

访问地址: http://172.19.5.47/aaaa/test1.jpg_300x240.jpg

Nginx的配置就不上了,直接贴Perl代码:

package ImageConvertForTRS;


use nginx;
use Image::Magick;
our $baseDir = "/home/tuanCenter/headPhoto/";


sub convertImg{
    my $r = shift;
    my $path = "";
    my $thumbnail = "";
    #$r->send_http_header('text/html; charset=utf-8');
    my @arr = split('/',$r->uri);  #分割请求的uri
    my $imgPath = @arr[2];  
    #$r->print("imgPath: ".$imgPath."\n\r");
    my @imgURI = split('_',$imgPath);   
    $suffix = (split('\.', @imgURI[0]))[1];
    #$r->print("suffix: ".$suffix."\n\r");
    if("jpg" eq lc($suffix) || "png" eq lc($suffix) || "gif" eq lc($suffix)){
        my $imgWHstr = (split('\.', @imgURI[1]))[0];
        if ($imgWHstr eq "300x240" || $imgWHstr eq "150x120" || $imgWHstr eq "315x135") {
          $thumbnail = $imgWHstr."^";
        } elsif ($imgWHstr eq "300x") {
          $thumbnail = $imgWHstr;
        } else {
            return 404;
        }
        $r->send_http_header('image/'.lc($suffix));
        $image= new Image::Magick;
        $image->Read($baseDir.@imgURI[0]);  #读取图片    
        $image->Thumbnail(geometry=>$thumbnail);  # 注意 ! 缩略图 先Thumbnail(压缩)再Extent(裁剪) 顺序要对 否则图片的尺寸或者压缩都不对
        $image->Extent(geometry=>$thumbnail, gravity=>'Center');
        #$image = exec("convert /home/tuanCenter/headPhoto/test1.jpg -thumbnail \"300x240^\" -gravity center -extent 300x    240 /home/tuanCenter/headPhoto/test2.jpg");
        @blobs = $image->ImageToBlob(); #将resize过的图片转换成Blob二进制对象
        $r->print(@blobs);              #直接返回二进制对象
        return OK;
    }
     #$r->rflush();
     return 404;
}


1;
__END__

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值