Computerhilfen.de Logo
Forum
Tipps
News

[gelöst] PHP: Grafik hochladen und Qualität ändern

Hi Leute,

für die Schulhomepage möchte ich ein Skript schreiben, welches eine Grafik hochläd,
in den temp. Ordner /News_Bilder/gross verschiebt und von dort aus dann in kleinerer
Form (max 100px breit, 80% Qualität) in den Ordner /News_Bilder zurück schiebt.

Die Datei in /gross/ soll danach natürlich wieder gelöscht werden, und damit es
nicht zu Überschreibungen kommt, soll die Upload-Zeit als Dateinamen verwendet werden.

(Im Moment teste ich das Ganze auf XAMPP, später soll's auf dem sächs. Bildunsserver laufen)

<?php
            
// Bild hochladen und konvertieren
            // Name = Upload-Zeit, um Überschreiben zu verhindern!
            $name time();
            
            
// Absoluter Pfad
            $target_path = &#39;I:\xampp\htdocs\TMG\News_Bilder\\&#39;;
            $endung explode("."basename($_FILES[&#39;bild&#39;][&#39;name&#39;]));
            // Letzte Endung suchen
            $endung $endung[count($endung)-1];
            $name $name "." $endung;
            $target $target_path $name;
            
            
// Zum Zielort verschieben
            $file $target_path "gross\\" $name;
            move_uploaded_file($_FILES[&#39;bild&#39;][&#39;tmp_name&#39;], $file);
            
            
// Bild verkleinern
            $max_width   100;
            $quality     80;
            if ($endung == "jpeg" or $endung == "jpg") {
                $src_img imagecreatefromjpeg($file);
            }
            if ($endung == "png") {
                $src_img imagecreatefrompng($file);
            }
            $picsize getimagesize($file);
            $src_width $picsize[0]; //  X
            $src_height $picsize[1]; // Y
            if($src_width $max_width) {
                $convert $max_width $src_width;
                $dest_width $max_width;
                $dest_height ceil($src_height $convert); // Aufrunden
            } else {
                $dest_width $src_width;
                $dest_height $src_height;
            }
            $dst_img imagecreatetruecolor($dest_width$dest_height);
            imagecopyresampled($dst_img$src_img0000$dest_width$dest_height$src_width$src_height);
            if($endung == "jpeg" or $endung == "jpg") {
                imagejpeg($dst_img$target$quality);
            }
            if ($endung == "png"){
                imagepng($dst_img$target$quality);
            }
            
            
// Temporäre Datei löschen
            unlink($file);
?>


Im Moment gibt es ne Menge Warnungen, aber ür mich sieht alles korrekt aus...

Wär echt gut wenns jemand hinbekommt.

Danke im voraus.

Warning: move_uploaded_file(I:\xampp\htdocs\TMG\News_Bilder\gross\1334530000.jpg)
[function.move-uploaded-file]: failed to open stream: No such file or directory in I:\xampp\htdocs
\TMG\admin\News_Resize_Pic.php on line 35

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'I:\xampp
\tmp\php77D.tmp' to 'I:\xampp\htdocs\TMG\News_Bilder\gross\1334530000.jpg' in I:\xampp\htdocs
\TMG\admin\News_Resize_Pic.php on line 35

Warning: imagecreatefromjpeg(I:\xampp\htdocs\TMG\News_Bilder\gross\1334530000.jpg)
[function.imagecreatefromjpeg]: failed to open stream: No such file or directory in I:\xampp\htdocs
\TMG\admin\News_Resize_Pic.php on line 41

Warning: getimagesize(I:\xampp\htdocs\TMG\News_Bilder\gross\1334530000.jpg)
[function.getimagesize]: failed to open stream: No such file or directory in I:\xampp\htdocs
\TMG\admin\News_Resize_Pic.php on line 46

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in
I:\xampp\htdocs\TMG\admin\News_Resize_Pic.php on line 57

Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in I:\xampp\htdocs
\TMG\admin\News_Resize_Pic.php on line 58

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in I:\xampp\htdocs\TMG\admin
\News_Resize_Pic.php on line 60

Warning: unlink(I:\xampp\htdocs\TMG\News_Bilder\gross\1334530000.jpg) [function.unlink]: No such
file or directory in I:\xampp\htdocs\TMG\admin\News_Resize_Pic.php on line 67
« Letzte Änderung: 18.04.12, 00:16:19 von .hendrik »

Antworten zu [gelöst] PHP: Grafik hochladen und Qualität ändern:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,

das sieht für mich so aus, als würde der Pfad "I:\xampp\htdocs\TMG\News_Bilder\gross\" nicht existieren. Hast Du den Ordner gross denn schon angelegt? Und ist htdocs richtig? nicht httpdocs?

Ansonsten würde mich der Doppelbackslash am Ende der Variablen $target_path stutzig machen. Entweder Du musst escapen, dann gehört auch vor jeden anderen Backslash ein Backslash, oder Du musst nicht escapen, dann gehört da nur einer hin.

Wenn das alles nicht hilft, fehlt Dir vielleicht die Berechtigung, um in dem Ordner zu schreiben. Welchem User Du da die Berechtigung geben musst, weiß ich beim xampp aber nicht.

Es scheitert aber auf jeden Fall an Zeile 35, weil der Zielpfad nicht existiert.

Hi MBGucky,

Ich bin so doof, ich hatte schon die selbe Vermutung, dass PHP den Zielpfad nicht kennt.
Habe aber nie daran gedacht den Ordner gross mal zu erstellen...

Tausend Dank, für den Hinweis!

Jetzt funktionierts (man bin ich froh)!

Ach ja, und die DoppelBackslashes müssen sein, weil die Backslashes die Anführungszeichen escapen würden.

Vielen Dank


« Website funktioniert unter Firefox aber nicht unter IEParse error: syntax error, unexpected '@' in 6 »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!