为 Laravel 中的图像添加水印

Adding watermark to images in Laravel

我正在尝试向图像添加文本(作为水印)。我正在使用 Image/Intervention 包。文字显示,但我希望它位于图像的右上角,我还希望增加尺寸。文字目前在左上角,尺寸非常小。

这是我的代码

if($request->hasFile('file')) {
    foreach ($request->file('file') as $photo) {
        $file = $photo;
        $img = Image::make($file);
        $img->text('12345 ', 120, 100, function($font) {
            $font->size(45);
            $font->color('#e1e1e1');
            $font->align('center');
            $font->valign('top');
        });
        $img->save(public_path('images/hardik3.jpg'));
    }
}

我该如何解决这个问题?

来自documentation

Font sizing is only available if a font file is set and will be ignored otherwise. Default: 12

因此您必须像下面的示例一样指定自定义字体:

$img->text('foo', 0, 0, function($font) {
    $font->file('foo/bar.ttf');
    $font->size(24);
    $font->color('#fdf6e3');
    $font->align('center');
    $font->valign('top');
    $font->angle(45);
});

更新

文本对齐方式与文本框的大小有关,但定位由 x 和 y 坐标(text 方法的第 2 个和第 3 个参数)给出。要将文本放在右上角,您可以这样做:

$img->text('foo', $img->width(), 100, function($font) {
    $font->file('foo/bar.ttf');
    $font->size(24);
    $font->color('#e1e1e1');
    $font->align('right');
    $font->valign('top');
});

text函数接受插入文本位置的X和Y坐标。由于您使用了坐标 120 和 100,因此文本被打印到显示的位置。

尝试以下操作:

if($request->hasFile('file')) {
    foreach ($request->file('file') as $photo) {
        $file = $photo;
        $img = Image::make($file);
        $img->text('12345 ', $img->width() - 120, 100, function($font) {
            $font->size(45);
            $font->color('#e1e1e1');
            $font->align('center');
            $font->valign('top');
        });
        $img->save(public_path('images/hardik3.jpg'));
    }
}

来源:http://image.intervention.io/api/text