如何在PHP Laravel中添加不同位置的水印图像?
嗨,我想添加不同位置的水印图像,如 左上角, 右上角, 左下角, 右下角, 中锋 管理员在设置选项卡中选择上述位置之一。我正在使用Orakuploader插件,在该插件中,水印出现在上传图像的中心 以下是中心位置水印图像的代码:如何在PHP Laravel中添加不同位置的水印图像?,php,laravel,image-uploading,watermark,Php,Laravel,Image Uploading,Watermark,嗨,我想添加不同位置的水印图像,如 左上角, 右上角, 左下角, 右下角, 中锋 管理员在设置选项卡中选择上述位置之一。我正在使用Orakuploader插件,在该插件中,水印出现在上传图像的中心 以下是中心位置水印图像的代码: function addWatermark($watermark, $imageDirectory, $imageName, $x = 0, $y = 0) { if(file_exists($watermark)) { $marge_r
function addWatermark($watermark, $imageDirectory, $imageName, $x = 0, $y = 0)
{
if(file_exists($watermark))
{
$marge_right = 0;
$marge_bottom = 0;
$stamp = imagecreatefrompng($watermark);
$image_extension = @end(explode(".", $imageName));
switch($image_extension)
{
case "jpg":
$im = imagecreatefromjpeg("$imageDirectory/$imageName");
break;
case "jpeg":
$im = imagecreatefromjpeg("$imageDirectory/$imageName");
break;
case "png":
$im = imagecreatefrompng("$imageDirectory/$imageName");
break;
}
$imageSize = getimagesize("$imageDirectory/$imageName");
$watermark_o_width = imagesx($stamp);
$watermark_o_height = imagesy($stamp);
$newWatermarkWidth = $imageSize[0];
$newWatermarkHeight = $watermark_o_height * $newWatermarkWidth / $watermark_o_width;
if((int)$x <= 0)
$x = $imageSize[0]/2 - $newWatermarkWidth/2;
if((int)$y <= 0)
$y = $imageSize[1]/2 - $newWatermarkHeight/2;
imagecopyresized($im, $stamp, $x, $y, 0, 0, $newWatermarkWidth, $newWatermarkHeight, imagesx($stamp), imagesy($stamp));
switch($image_extension)
{
case "jpg":
header('Content-type: image/jpeg');
imagejpeg($im, "$imageDirectory/$imageName", 100);
break;
case "jpeg":
header('Content-type: image/jpeg');
imagejpeg($im, "$imageDirectory/$imageName", 100);
break;
case "png":
header('Content-type: image/png');
imagepng($im, "$imageDirectory/$imageName");
break;
}
}
}
如何将水印添加到其他位置,如左上角、右上角、左下角和右下角
非常感谢你的帮助。谢谢我建议您为此使用干预图像库。它有一个健壮且富有表现力的API 对于不同位置的水印,您可以参考本页 你应该得到这样的结果
$img = Image::make('public/foo.jpg');
$watermark = Image::make('public/watermark.png');
$img->insert('public/watermark.png', 'bottom-right', 10, 10);
嘿,伙计,尝试用imagecopyresized函数替换此代码。 我希望它能为你工作。 谢谢
谢谢你的回复。但是我向Orakuploader库支付了更多的功能,比如排序、裁剪、旋转、上传、水印等。所以我想帮助在库中不同位置的图像添加水印。为什么不同时使用这两种功能呢?e、 g.水印的干预/图像和其他任务的Orakuploader。老实说,干预/图像可以做到这一切。。。这是我见过的最好的。
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// top-left
imagecopy($im, $stamp, -45, -5, 0, 0, imagesx($stamp), imagesy($stamp));
// top-right
imagecopy($im, $stamp, imagesx($im) - $sx + 45, -5, 0, 0, imagesx($stamp), imagesy($stamp));
// bottom-left
imagecopy($im, $stamp, -45, imagesy($im) - $sy + 5, 0, 0, imagesx($stamp), imagesy($stamp));
// bottom-right
imagecopy($im, $stamp, imagesx($im) - $sx + 45, imagesy($im) - $sy + 5, 0, 0, imagesx($stamp), imagesy($stamp));
// center
imagecopy($im, $stamp, (imagesx($im) - $sx)/2, (imagesy($im) - $sy)/2, 0, 0, imagesx($stamp), imagesy($stamp));