我写了一个很长的脚本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
定义图像的网址,w
定义目标调整大小宽度。
例如:如果我的脚本位于libs/
目录中,而我的照片位于resources
目录中,并且我想用width = 100
显示我的照片,我必须使用这个html:
<img src="libs/image.php?ph=../resources/myimage.jpg&w=100">
我的问题是,我的图片正确显示在浏览器中,但网址格式不正确。我想在图片属性中添加图片alt
属性而不是此网址。
并自动将image.php
应用于图片请求。
另外,当用户想要将图像保存在桌面上时,我遇到了问题,图像以名称image.php
保存,这是不可取的。
提前谢谢。
答案 0 :(得分:3)
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]
请注意,您不能在网址中使用..,因此请使用root-relative网址。为此,您需要在php文件中添加document_root路径:
$image = $_SERVER['DOCUMENT_ROOT'] . "/" . str_replace('..','', $_GET['ph']);
保存图像的用户将获得正常的图像名称,但是使用“ - ”并将大小添加到最后。
不确定你想要什么用alt。另外我认为重写所有图像并不明智,所以这个脚本只用/ resize /...重新开始图像。
www.example.com/hosting.jpg是不可能的,因为php不知道在哪个文件夹中查找此图像,以及调整大小的大小。