图像URL重写


Images URLs Rewriting

我写了一个很长的脚本image.php,但我只是复制了下面的一部分代码。

注意:

$image = $_GET['ph'];
$w = $_GET['w'];

因此:

function getImage_w($image, $w){
    $ext = strrchr($image, ".");
    if (strtolower($ext) == '.jpg' || strtolower($ext) == '.jpeg'){
        header('Content-type: image/jpeg');
        $src_im_jpg = imagecreatefromjpeg($image);
        $size = getimagesize($image);
        $src_w = $size[0];
        $src_h = $size[1];
        $dst_w = $w;
        $dst_h = round(($dst_w/$src_w)*$src_h);
        $dst_im = imagecreatetruecolor($dst_w,$dst_h);
        imagecopyresampled($dst_im,$src_im_jpg,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
        imagejpeg($dst_im);
    }
}

此脚本使用两个GET变量$_GET['ph']$_GET['w']ph定义图像的URL,w定义目标调整大小宽度。

例如:如果我的脚本在libs/目录中,我的照片在resources目录中,并且我想用width = 100显示我的照片,我必须使用这个html:

<img src="libs/image.php?ph=../resources/myimage.jpg&w=100">

我的问题是,我的图像在浏览器中显示正确,但url格式不正确。我想在images属性中放入images alt属性,而不是这个url。

并自动将image.php应用于图像请求。

此外,当用户想将图像保存在他的桌面中时,我遇到了一个问题,该图像以名称image.php保存,这是不可取的。

提前谢谢。

RewriteEngine on
#change 'resize' to the folder your image.php is in
RewriteBase /resize
#e.g. /resize/path/to/image/sample-200.jpg
# will become /resize/image.php?ph=path/to/image/sample.jpg&w=200
RewriteRule ^(.*)-([0-9]+)('.jpg)$ image.php?ph=$1$3&w=$2 [L,NC]

请注意,您不能使用。。在url中,因此使用根相对url。要做到这一点,您需要将document_root添加到php文件中的路径:

$image = $_SERVER['DOCUMENT_ROOT'] . "/" . str_replace('..','', $_GET['ph']);

保存图像的用户将获得正常的图像名称,但末尾添加了"-"和大小。

不确定你想用alt做什么。我也不认为重写所有图像是明智的,所以这个脚本只重写以/resize开头的图像。。。

www.example.com/hosting.jpg是不可能的,因为php不知道在哪个文件夹中查找此图像,也不知道将其调整到什么大小。