Я пытаюсь добавить текст к изображению с границей перед загрузкой на сервер. Кажется, однако, что я написал свой код, не загружает изображение. Я проверил отдельно, что работа загружать и манипуляцию изображений работа, но вместе они не работают:Редактирование изображения с GD перед загрузкой на сервер
$name = "some text";
$target_dir = "uploads/";
//strip filename of clear spaces
$cleaned = str_replace(' ', '', basename($_FILES["fileToUpload"]["name"]));
$target_file = $target_dir . $cleaned;
$image = $_FILES["fileToUpload"]["name"];
$im = imagecreatefromjpeg($image);
$white = imagecolorallocate($im, 255, 255, 255);
$font_path = 'uploads/SCRIPTIN.ttf';
$text = "In Memory of " . $name;
imagesetthickness($im, 200);
$black = imagecolorallocate($im, 0, 0, 0);
$x = 0;
$y = 0;
$w = imagesx($im) - 1;
$z = imagesy($im) - 1;
imageline($im, $x, $y, $x, $y+$z, $black);
imageline($im, $x, $y, $x+$w, $y, $black);
imageline($im, $x+$w, $y, $x+$w, $y+$z, $black);
imageline($im, $x, $y+$z, $x+$w ,$y+$z, $black);
imagettftext($im, 200, 0, 20, 300, $white, $font_path, $text);
Я думаю, что это может быть связанно с тем, как я пишу файл на сервер:
move_uploaded_file(imagejpeg($im), $target_file);
Вы должны использовать $ _FILES [ 'fileToUpload'] ['tmp_name'], где файл фактически хранится на вашем сервере, $ _FILES ['fileToUpload'] ['name'] дает только исходное имя, как это было на компьютере пользователя. Кроме того, вы не выполняете никаких проверок относительно того, является ли это допустимым файлом - это может привести к проблемам, вы не должны доверять своему пользователю. По крайней мере, выполните проверку расширения и проверку типа mime. Это также позволит вам работать с форматами изображений, отличными от jpg/jpeg. – Eihwaz
просто замените «move_uuploaded_file» на «imagejpeg ($ im, $ target_file);» – kraysak