У меня есть этот PHP-скрипт (ниже): Я получаю строку base64 с помощью POST, чем использовать функцию imagecreatefromstring, а затем пытаюсь добавить водяной знак и сохранить его. Но после загрузки файл остается пустым на сервере. Что я делаю неправильно?Добавить водяной знак в изображение (Base64) и преобразовать его
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
define('UPLOAD_DIR', 'img/');
$base64 = base64_decode(preg_replace('#^data:image/[^;]+;base64,#', '', $_POST['string']));
$stamp = imagecreatefrompng('img/wm.png');
$im = imagecreatefromstring($base64);
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50);
$file = UPLOAD_DIR . uniqid() . '.png';
imagepng($im, $file, 100);
echo 'ok';
} else {
echo "error";
}
?>
Может ли кто-нибудь помочь мне решить эту проблему?
http://php.net/gd –
imagepng() принимает 3-й $ качества аргумент, который может быть от 0 до 9 (все без потерь, 9 - максимальное сжатие). 100 не является вариантом. Не уверен, что это ошибка. –
О, конечно !! Да, ты прав. изменил качество, и он отлично работает! Спасибо!! –