【问题标题】:Images URLs Rewriting图片 URL 重写
【发布时间】:2011-12-03 15:31:29
【问题描述】:

我写了一个很长的脚本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 格式错误。我想把图片alt 属性而不是这个 url 放在 images 属性中。

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

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

提前谢谢你。

【问题讨论】:

  • 我不明白您的问题...您希望图像文件的 src 是不同的 URL?可以举个例子吗?
  • 请格式化您的代码以便于阅读。 :)
  • @BrianGlaz - 我相信 OP 正试图美化他的图像 URL 以删除 GET 字符串部分。
  • @JaredFarrish 好的,我现在明白了。 Simo... 你熟悉 .htaccess 和 mod rewrite 吗?这应该可以帮助你做你想做的事
  • 我希望你有一些安全措施来防止有人下载他们不应该下载的内容(包括服务器文件和脚本)。 :)

标签: php html image url


【解决方案1】:
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 中使用 ..,因此请改用 root-relative url。为此,您需要在 php 文件中添加 document_root 路径:

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

保存图像的用户将获得正常的图像名称,但带有一个“-”和最后添加的大小。

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

www.example.com/hosting.jpg 是不可能的,因为 php 不知道在哪个文件夹中查找此图像,以及调整它的大小。

【讨论】:

  • 谢谢@Gerben,我真的会试试这个解决方案,再次感谢你:-) +1,
  • 现在效果很好,非常感谢朋友们+最佳答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2022-01-19
  • 2013-12-16
  • 1970-01-01
  • 2014-04-07
  • 2012-10-09
相关资源
最近更新 更多