php - создание водяного знака img
<img id='imgt' src='../img/crop00.jpg' alt='img'>
<img id='imgtest' src='../img/crop00.jpg' alt='img'>
JS
...
$.ajax({
url: 'pro20.php',
type: 'post',
data: {...},
success: function(data) {
$('#imgtest').attr('src', data);
}
});
PHP
error_reporting(E_ALL);
ini_set('display_errors', 1);
Библиотека GD включена - проверено с помощью print_r(gd_info());
pro20.php
Я пытаюсь запустить этот код
$stamp = imagecreatefrompng('img/wmark.png');
$im = imagecreatefromjpeg('img/test.jpg');
$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));
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
echo imagepng($im); // my added line 28
Результат:
- #imgtest
пусто,
- в файловой системе нет нигде нового созданного img
- журнал ошибок:
[:error] [pid 2736:tid 1580] [client ::1:59185] PHP Warning: imagepng(): supplied resource is not a valid Image resource in ... pro20.php on line 28,
1 ответ
В коде нет ничего плохого. Вероятно, проблема в том, что одно (или оба изображения) загружаются неправильно:
$stamp = imagecreatefrompng('img/wmark.png');
$im = imagecreatefromjpeg('img/test.jpg');
Проверь это img/wmark.png
а также img/test.jpg
существуют и являются действительными изображениями.
Я проверил ваш код (с небольшим изменением):
<?php
$stamp = imagecreatefrompng('wmark.png');
$im = imagecreatefromjpeg('img.jpg');
$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));
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
echo imagepng($im);
И я получил это:
Ничего плохого в вашем коде. Вероятная проблема заключается в том, что ваши изображения могут быть недействительными изображениями в формате png / jpg. Пожалуйста, подтвердите это.