Как я могу наложить водяной знак на уже пересчитанное изображение в PHP (используя GD)? - PullRequest
0 голосов
/ 25 мая 2010

Вот мой текущий код:

define('IMG_WIDTH',  (isset ($_GET['width']))  ? (int) $_GET['width']  : 99);
define('IMG_HEIGHT', (isset ($_GET['height'])) ? (int) $_GET['height'] : 75);

$image      = imagecreatefromjpeg($_GET['image']);
$origWidth  = imagesx($image);
$origHeight = imagesy($image);

$croppedThumb = imagecreatetruecolor(IMG_WIDTH, IMG_HEIGHT);

if ($origWidth > $origHeight)
{
   $leftOffset = ($origWidth - $origHeight) / 2;
   imagecopyresampled($croppedThumb, $image, 0, 0, $leftOffset, 0, IMG_WIDTH, IMG_HEIGHT, $origHeight, $origHeight);
}
else
{
   $topOffset  = ($origHeight - $origWidth) / 2;
   imagecopyresampled($croppedThumb, $image, 0, 0, 0, $topOffset, IMG_WIDTH, IMG_HEIGHT, $origWidth, $origWidth);
}

Это в основном берет изображение и изменяет размеры, чтобы создать миниатюру. Это работает довольно хорошо. То, что я хотел бы сделать сейчас, это добавить водяной знак в правом нижнем углу. Я видел функцию imagecopymerge, используемую для этого ... Однако, похоже, это не позволяет мне предоставлять передискретизированное изображение в качестве источника.

Как взять уже измененное изображение и добавить водяной знак? : /

Я думал о сохранении изображения в / tmp, а затем об отмене ссылки () после его добавления водяного знака, но это выглядит как беспорядок ...

1 Ответ

0 голосов
/ 25 мая 2010

Вы можете использовать $croppedThumb в качестве первого аргумента для imagecopymerge. Вам не нужно сначала сохранять изображение.

...