Перезапись URL изображений - PullRequest
1 голос
/ 08 октября 2011

Я написал скрипт 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, что нежелательно.

Заранее спасибо.

1 Ответ

3 голосов
/ 08 октября 2011
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']);

Пользователи, сохраняющие изображение, получат обычное имя изображения, но с '-' и размером, добавленным в конец.

Не уверен, что вы хотите с альт.Кроме того, я не думаю, что было бы разумно переписывать все изображения, поэтому этот скрипт переписывает только изображения, поэтому запуск с /resize/...

www.example.com / hosting.jpg невозможен, так какphp не знает, в какой папке искать это изображение, и в каком размере его изменять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...