如何在 PHP 中(使用 GD)已经重新采样的图像上叠加水印?

Posted

技术标签:

【中文标题】如何在 PHP 中(使用 GD)已经重新采样的图像上叠加水印?【英文标题】:How can I overlay a watermark on an already resampled image in PHP (using GD)? 【发布时间】:2010-05-25 04:25:25 【问题描述】:

这是我当前的代码:

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】:

您可以使用$croppedThumb 作为imagecopymerge 的第一个参数。您不必先保存图像。

【讨论】:

以上是关于如何在 PHP 中(使用 GD)已经重新采样的图像上叠加水印?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决GD32F103在重新上电AD采样时偶尔有6个码的跳动

如何使用 PHP 和 GD 制作水印图像,如 envato photodune 预览图像?

图像复制在 PHP 中重新采样,有人可以解释一下吗?

GD/Imagick 不保存我的图像

在 PHP 中,如何直接在我的网站上使用 GD 库创建的图像

如何使用 PHP 的 GD 库对图像执行接缝雕刻?