Größe per auswahl (Bilder)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
argument
bild
code
datei
erstellt image
file
image
leeres bild
list
maximum
not
output
problem
set
type
verzeichnis
zugriff
zugriffsrecht
zweite bild
-
Abend @all,
ich möchte gerne das der User per Dropliste enscheiden wie klein das bild werden soll aber ertwas will nicht so recht.
admin.php
<html> <head> <title>Bilder Upload </title> <body> Groesse waehlen<br/> <form name="groß" method="post"> <div> <select name="groß"> <option value="200x200;"/>200x200</option> <option value="400x400;"/>400x400</option> </select> </div> </form> Bild hochladen<br/> <form action="upload.php" enctype="multipart/form-data" method="post"> <input name="file" type="file" /> <input type="submit" value="Ok, Hochladen!" /> </form><!-- br --> </body> <html>
upload.php
// Set a maximum height and width if($_POST[groß]=='200x200'){ $width = 200; $height = 200; }else{ if($_POST[groß]=='400x400'){ $width = 400; $height = 400; }} $tempname = $_FILES['file']['tmp_name']; $name = $_FILES['file']['name']; $type = $_FILES['file']['type']; $size = $_FILES['file']['size']; if($type != "image/jpeg") { $err[] = "jpeg Dateien dürfen hochgeladen werden."; } if($size > "5000000") { $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 5 MB!"; } if(empty($err)) { list($width_orig, $height_orig) = getimagesize($tempname); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } $image_p = imagecreatetruecolor($width, $height); // neues, leeres Bild wird erstellt $image = imagecreatefromjpeg($tempname); //=> das zwischengespeicherte Bild wird eingelesen imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); //=> das zweite Bild wird in das Erste kopiert // Output imagejpeg($image_p, $name, 100); //=> Das Bild wird gespeichert in DATEIN echo "Die Datei $name wurde erfolgreich hochgeladen!"; echo"<br/>"; echo "Verzeichnis" . $name; } else { foreach($err as $error) echo "$error<br>"; } ?>
irgendwie habe ich das gefühl das das was in der dropliste ausgewählt wir gar nicht ankommt in der upload.php
freue mich auf jede Hilfe
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
nimm einfach das Semikolon im Option-Feld weg, dann sollte es funktionieren.
<option value="200x200"/>200x200</option> <option value="400x400"/>400x400</option>
ich würde aber eher einen eindeutigeren Feldnamen wählen
<option value="1"/>200x200</option> <option value="2"/>400x400</option>
-
$_GET["groß"] statt $_GET[groß] verwenden.
-
nein , leider nicht
Warning: Division by zero in verzeichnis/upload.php on line 26 Warning: imagecreatetruecolor(): Invalid image dimensions in verzeichnis/upload.php on line 31 Warning: imagecopyresampled(): supplied argument is not a valid Image resource in verzeichnis/upload.php on line 33 Warning: imagejpeg(): supplied argument is not a valid Image resource in /verzeichnis/upload.php on line 36
außer dem werden die Zugriffsrecht immer auf 600 gestellt ich bruach sie aber immer auf 644 kann man das ändern// das das automatisch auf 644 ist -
Hab Deinen Code mal etwas aufgeräumt...
admin.php:
<html> <head> <title>Bilder Upload </title> <body> <form action="upload.php" enctype="multipart/form-data" method="post"> Groesse waehlen<br/> <div> <select name="size"> <option value="200x200">200x200</option> <option value="400x400">400x400</option> </select> </div> Bild hochladen<br/> <input name="file" type="file" /><input type="submit" value="Ok, Hochladen!" /> </form><!-- br --> </body> <html>
upload.php:
<?php // Set a maximum height and width switch ($_POST['size']) { case '400x400': $width = 400; $height = 400; break; default: $width = 200; $height = 200; } $tempname = $_FILES['file']['tmp_name']; $name = $_FILES['file']['name']; $type = $_FILES['file']['type']; $size = $_FILES['file']['size']; if($type != "image/jpeg") { $err[] = "jpeg Dateien dürfen hochgeladen werden."; } if($size > "5000000") { $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 5 MB!"; } if(empty($err)) { list($width_orig, $height_orig) = getimagesize($tempname); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } $image_p = imagecreatetruecolor($width, $height); // neues, leeres Bild wird erstellt $image = imagecreatefromjpeg($tempname); //=> das zwischengespeicherte Bild wird eingelesen imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); //=> das zweite Bild wird in das Erste kopiert // Output imagejpeg($image_p, $name, 100); //=> Das Bild wird gespeichert in DATEIN // Speicher freigeben imagedestroy($image); imagedestroy($image_p); echo "Die Datei $name wurde erfolgreich hochgeladen!<br/>Verzeichnis" . $name; } else { foreach($err as $error) echo "$error<br>"; } ?>
So funktioniert es, aber alles perfekt ist da noch nicht... z.B. werden Bilder mit gleichem Namen einfach überschrieben -
staymyfriend schrieb: Hab Deinen Code mal etwas aufgeräumt...
Dankeschön
leider habe ich noch das problem wie ich den Zugriff ändere das Skript baut es immer in 600 das Das nur ich zugriff habe , aber es muss immer 644 haben damit das funktioniert. Wie kann man das Problem lösen
-
Was meinst Du? Für welches File brauchst du die Zugriffsrechte 644?
Grundsätzlich geht das so: $success = chmod("dateiname", 0644);
Beitrag zuletzt geändert: 2.11.2009 17:30:43 von staymyfriend -
die datei die ensteht bie den verkleinern die ist komischerweise immer nur für mich nicht für Gruppe oder öffentlich
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage