访问地址: 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__