Обработка и вывод изображений с использованием GD в php - PullRequest
2 голосов
/ 06 января 2010

Я хочу управлять отображением изображений с помощью библиотеки PHP GD - я собираюсь добавить текст в нижний угол на лету, когда браузер запрашивает изображение, а не сохранять текст в изображение.

Я знаю, что могу это сделать: установить тип MIME в заголовке, а затем вызвать imagepng(...) с именем файла, чтобы просто отобразить изображение в браузере, но как бы я встроил его в документ? Как,

<img src='somefile.php?i=1' ... />

мне просто позвонить imagepng с именем файла, но без установки заголовков?

Кроме того, если кто-то скопирует источник изображения из исходного кода и перейдет к нему в браузере ... что произойдет, если заголовки не установлены? Будет ли изображение отображаться так, как если бы оно было запрошено?

1 Ответ

4 голосов
/ 06 января 2010

Если вы сгенерируете изображение на somefile.php, когда пользователь попытается получить доступ к этому URL-адресу напрямую, вывод браузеров будет изображением, если они не задают переменную, содержащую идентификатор / имя самого изображения.

Чтобы использовать изображение в html, я просто делаю <img src='somefile.php?f=FILENAME' />, чтобы сделать его более читабельным (если у вас есть соответствующие имена изображений).

Обязательно обрабатывайте неуказанный доступ к somefile.php, перенаправляя или показывая изображение по умолчанию.

О заголовках, это то, что сообщает браузеру, какой тип файла он будет обрабатывать, поэтому убедитесь, что вы указали их всегда . Например:

#somefile.php

header('content-type: image/jpeg');  

$watermark = imagecreatefrompng('watermark.png');  
$watermark_width = imagesx($watermark);  
$watermark_height = imagesy($watermark);

$image = imagecreatetruecolor($watermark_width, $watermark_height);  
$image = imagecreatefromjpeg($_GET['src']);  //Path to the image file

$size = getimagesize($_GET['src']);          
$dest_x = $size[0] - $watermark_width - 5;  
$dest_y = $size[1] - $watermark_height - 5;

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);  
imagejpeg($image);  
imagedestroy($image);  
imagedestroy($watermark);  

Таким образом, чтобы вывести изображение с этим кодом на html-страницу, вы должны сделать следующее:

<img src='somefile.php?src=filePath' />

Примечание: Если вам не нужен jpg, просто измените его на png.

Больше документации по GD + PHP доступно здесь .

...