1、php代码
$file = $_SERVER ['REQUEST_URI'];//请求字串 /1.jpg@50x50
$srcFile = $_SERVER ['DOCUMENT_ROOT'] .$file;
$desfile = $_SERVER ['DOCUMENT_ROOT'] . '/thumbnail'.$file; //目标目标路径
$dirname = dirname ( $srcFile ) . "/";
$filename = basename ( $desfile );
if (preg_match ("/(.*)\.(\w+)+@+(\d+)+x+(\d+)/is", $filename, $m )) {
$srcfile = $dirname . $m [1].'.'.$m[2];
$width = $m [3]; //匹配出输出文件宽度
$height = $m [4]; //匹配出输出文件高度
createThumbnail ( $srcfile, $desfile.'.'.$m[2], $width,$height);
}
function createThumbnail($src,$des,$width,$height){
if(file_exists($des)){
header('Content-type: image/jpg');
$data = file_get_contents($des);
echo $data;
}
$dir = dirname($des);
if(!is_dir($dir)){
makeDir($dir);
}
$imageinfos = getimagesize ( $src );
$height = intval($width / $imageinfos[0] * $imageinfos[1]);
$wh = $width.'x'.$height;
$str = "gm.exe convert " .$src. " -thumbnail ".$wh." -background gray -gravity center -extent ".$wh." ".$des.' 2>&1';
exec($str,$out,$status);
if($status == 0){
header('Content-type: image/jpg');
$data = file_get_contents($des);
echo $data;
}
}
function makeDir($path){
if(is_dir($path)){
//已经是目录了就不用创建
return true;
}
if(is_dir(dirname($path))){
//父目录已经存在,直接创建
return mkdir($path);
}
makedir(dirname($path));//创建各级父目录
return mkdir($path);//因为有父目录,所以可以创建路径
}
2、apache配置
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} ^.*\.(gif|jpg|jpeg|png)@(.*)$
RewriteRule ^/.*$ /img.php [PT]
graphicsmagick+apache图片请求在线生成规定尺寸图片
最新推荐文章于 2024-03-14 12:21:20 发布