Koresh Пользуйся пакетом Intrevention Image http://image.intervention.io/
Вот как я накладывал ватермарку на изображение:
$img = Image::make($path); // $path = путь до картинки
// Ставлю текст 'Watermark text' в центре изображения
$img->text('Watermark text', $img->width() / 2, $img->height() / 2, function($font){
$font->file(storage_path('app/Roboto-Regular.ttf')); // Шрифт для текста
$font->size(30); // Размер текста
$font->color(array(0, 0, 0, 0.5)); // Цвет текста
$font->align('center'); // Выравнивание текста
$font->valign('top'); // Верт. выравнивание текста
});
// $pathToSave = строка с путем для сохранения изображения
Storage::put($pathToSave, $img->encode('png', 100));
В документации Intervention есть пример как установить ватермарку не текстом а картинкой. Там легко