Добавление водяного знака к изображению внутри WP

У меня есть вызов AJAX с wordpress, где мне нужно добавить водяной знак к изображению и отправить его по электронной почте. Я следую этим инструкциям (и многим другим здесь, в stackoveflow), чтобы достичь желаемого результата, но безрезультатно, все, что я получаю, это маленькое черное изображение.

Вот мой код

    $im = imagecreatefromjpeg("https://s3-eu-west-1.amazonaws.com/pitchprint.io/previews/" . $project_id . "_1.jpg");
    $stamp = imagecreatefrompng(get_site_url() . "/wp-content/themes/porto-child/img/watermark.png");
    
    $marge_right = 10;
    $marge_bottom = 10;
    $sx = imagesx($stamp);
    $sy = imagesy($stamp);

    imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

    // Output and free memory
    header('Content-type: image/png');
    imagepng($im);
    imagedestroy($im);

пути к изображениям верны, и они нормально загружаются в браузере, но по какой-то причине я не могу заставить этот код работать, любая помощь очень ценится.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
143
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

$string = "My watermark text";
$color = imagecolorallocate($image, 255, 255, 255);
$fontSize = 3;
$x = 0;
$y = 0;
imagestring($image, $fontSize, $x, $y, $string, $color);

если вы хотите вставить изображение в изображение, используйте imagecopymerge

На что ссылается ваша переменная $image, imagecreatefromjpeg('somepathtoimage.jpeg')?

ivan marchenko 16.12.2020 18:18

ресурс $ изображение. вы можете использовать imagecreatefromjpeg, imagecreate, imagecreatefromgif,

Eden Moshe 16.12.2020 21:25
Ответ принят как подходящий

Код тоже работает, я тестировал его на локальной машине.

  1. Проверьте свой код со статическим URL-адресом изображения. Убедитесь, что он работает со статическим изображением.
  2. Поместите URL-адреса ваших изображений в тег, чтобы убедиться, что ваши изображения работают хорошо.

Я думаю, что это проблема с вашими изображениями.


Редактировать: ваше изображение в облаке не JPEG, это формат изображения PNG, он просто имеет расширение jpg. Итак, просто измените этот код

$im = imagecreatefromjpeg("https://s3-eu-west-1.amazonaws.com/pitchprint.io/previews/" . $project_id . "_1.jpg");

К

$im = imagecreatefrompng("https://s3-eu-west-1.amazonaws.com/pitchprint.io/previews/" . $project_id . "_1.jpg");

Изображения работают хорошо, пути к изображениям открываются хорошо и без ошибок.

ivan marchenko 16.12.2020 18:19

Вы проверяли код со статическим URL-адресом изображения?

Zed 16.12.2020 18:22

Да, я сделал. Путь к изображению хорошо работает внутри тега изображения html.

ivan marchenko 16.12.2020 18:32

Не могли бы вы показать мне значения $project_id и get_site_url() для проверки с реальными данными?

Zed 16.12.2020 18:53

вот изображение https://s3-eu-west-1.amazonaws.com/pitchprint.io/previews/03‌​1db1e338d4aca350440b‌​4dc164e991_1.jpg Я использую локальный маховик, поэтому мой get_site_url() возвращает мой локальный сайт разработки, который отлично загружает изображение.

ivan marchenko 16.12.2020 18:58

Хм, вместо этого я все еще получаю черное изображение.

ivan marchenko 16.12.2020 20:35

Убедитесь, что формат ваших изображений правильный. И оригинальное фото, и водяной знак. Используйте свой код в соответствии с форматами изображений. Расширение изображения не имеет значения. Тип файла важен, и вы должны использовать функции imagecreatefromjpeg и imagecreatefrompng в соответствии с форматом вашего изображения. Это очень очень важно. Наконец, осталось только фото с водяным знаком. Убедитесь, что это правильный формат изображения png, потому что вы использовали imagecreatefrompng. Если проблема не решается, смело обращайтесь за помощью. :-)

Zed 16.12.2020 20:56

Другие вопросы по теме