Написал скрипт!
Запускаю через cron , соответственно положил его в папку cron, назвал setwatermark.php
function setWatermark($stamp, $image)
{
// Загрузка штампа и фото, для которого применяется водяной знак
$file = $image;
header("Content-type: image/png"

;
$stamp = imagecreatefrompng($stamp);
$image = imagecreatefromjpeg($image);
imagealphablending($image, true);
imagealphablending($stamp, true);
imagesavealpha($image, true);
imagesavealpha($stamp, true);
// получение высоты/ширины штампа
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// накладываю только на картинки больше 350px
if (imagesx($image) > 350 || imagesy($image) > 350) {
//накладываю посередине
imagecopy($image, $stamp, imagesx($image) - (imagesx($image)/2+$sx/2), imagesy($image) - (imagesy($image)/2+$sy/2), 0, 0, imagesx($stamp), imagesy($stamp));
imagejpeg($image,$file);
}
// Вывод и освобождение памяти
imagedestroy($image);
imagedestroy($stamp);
}
// $path - путь к директории
// $pattern - шаблон поиска
// $flags - константа для функции glob()
// $depth - глубина вложенности, != 0 без ограничений
function getAllFiles($path, $pattern = '*', $flags = GLOB_NOSORT, $depth = 0)
{
$matches = [];
$folders = array(rtrim($path, DIRECTORY_SEPARATOR));
while ($folder = array_shift($folders)) {
$matches = array_merge($matches, glob($folder . DIRECTORY_SEPARATOR . $pattern, $flags));
if ($depth != 0) {
$moreFolders = glob($folder . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR);
$folders = array_merge($folders, $moreFolders);
}
}
return $matches;
}
$path = '../upload/shop_3'; // папка с которой начинаем искать
$tree = getAllFiles($path, "*", GLOB_NOSORT, 1);
$files = [];
foreach ($tree as $item) {
$ext = pathinfo($item, PATHINFO_EXTENSION);
if (is_file($item) and $ext == 'jpg'

{
$files[] = $item;
}
}
$stamp = 'watermark.png'; // путь к watermark, я положил в папку cron, там же где и скрипт
foreach ($files as $file) {
setWatermark($stamp, $file);
}
Один раз запустил, все гуд! сменил начальную папку на shop_4 и тд.