Ich versuche, einem Bild mit einem Rahmen Text hinzuzufügen, bevor ich es auf den Server hochlade. Es scheint jedoch, dass die Art, wie ich meinen Code geschrieben habe, das Bild nicht hochlädt. Ich habe getrennt, dass die Upload-Werke überprüft und die Bildmanipulation arbeiten aber zusammen sie nicht funktionieren:Bearbeiten von Bildern mit GD vor dem Hochladen auf Server
$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);
Ich denke, es könnte im Zusammenhang, wie ich schreibe die Datei auf dem Server:
move_uploaded_file(imagejpeg($im), $target_file);
Sie $ _FILES verwenden sollten [ 'fileToUpload'] ['tmp_name'], hier wird die Datei tatsächlich auf Ihrem Server gespeichert, $ _FILES ['fileToUpload'] ['name'] gibt Ihnen nur den ursprünglichen Namen, wie er auf dem Benutzercomputer war. Außerdem führen Sie keine Überprüfungen durch, ob dies eine gültige Datei ist oder nicht. Dies kann zu Problemen führen. Sie sollten Ihrem Benutzer nicht vertrauen. Führen Sie mindestens eine Erweiterungsprüfung und eine MIME-Typüberprüfung durch. Dadurch können Sie auch mit anderen Bildformaten als jpg/jpeg arbeiten. – Eihwaz
Ersetzen Sie einfach die "move_uuploaded_file" zu "imagejpeg ($ im, $ target_file);" – kraysak