Autor | Zpráva | ||
---|---|---|---|
Pechy Profil * |
#1 · Zasláno: 7. 1. 2008, 19:16:17
Ahoj, mám kód pro zmenšení obrázků:
<? function Resizer( $filename, $copypath) { $filename = "..".$filename; $copypath = "..".$copypath; list($OrigWidth, $OrigHeight) = getimagesize($filename); if ($OrigWidth == 0 or $OrigHeight ==0) { $NewWidth=200; $NewHeight = $OrigHeight * $NewWidth; $NewHeight = $NewHeight / $OrigWidth; $image_p = imagecreatetruecolor($NewWidth, $NewHeight); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); imagejpeg($image_p, $copypath, 75); return true;} } if (OverOpravneni ("galerie", 1)){ $MB = 1024*1024; ?> <body background="back.JPG"> <span class="Nad">Nahrávání fotografie na server</span> <form method="POST" ENCTYPE="multipart/form-data" action="index.php?main=galerie"> <table border="0" > <tr> <td>Typ</td> <td> <select name="Typ"> <option value="1">Fotografie školy</option> <option value="2">Práce žáků</option> <option value="3">Výlety a exkurze</option> </td> </tr> <tr> <td>Obrázek (formát JPEG)</td> <td> <input type="HIDDEN" name="MAX_FILE_SIZE" VALUE=1024000> <input type="file" name="temp" ACCEPT="image/*"> </td> <td>(max. <?echo $MB;?> Kb)</td> </tr> <tr> <td>Autor</td> <td> <input type="text" name="Autor" value="Anonym"> </td> </tr> <tr> <td>Text</td> <td> <textarea name="Text">Popis obrázku</textarea> </td> </tr> <tr> <td colspan="3"> <input type="hidden" name="odeslano" value="1"> <p align="center"><input type="submit" value="Odeslat" class="send"></td> </tr> </table> </form> <? $Text = $_POST["Text"]; $autor = $_POST["Autor"]; $Datum = date ("d.m.Y H:i:s"); $src = date ("dmYHis"); $copy = "/Thumb/{$src}.jpg"; $src = "/Foto/{$src}.jpg"; $Text = str_replace("\n", "<br>", $Text); $date = date ("d.m.Y"); $IP = $_SERVER["REMOTE_ADDR"]; if ($_REQUEST["odeslano"]==1){ if ($_FILES['temp']['size']>$MB) die ("Soubor je příliš velký"); if (!is_file($_FILES['temp']['tmp_name'])) die ("Žádný soubor jste neuploadovali !!!"); if (move_uploaded_file($_FILES['temp']['tmp_name'], $src)) { echo "Soubor byl nahrán na server. Souboru byla přidělena adresa .".$src. "."; $spojeni = mysql_connect("localhost","login","pass" ); mysql_select_db("DB", $spojeni); $vysledek = mysql_query("SET NAMES cp1250"); Resizer ($src, $copy); $src = ".".$src; $copy=".".$copy; $vysledek = mysql_query( "INSERT INTO `galerie` ( `ID` , `URL` , `Thumb` , `Popis` , `Autor` , `Pridano` , `Typ` ) VALUES (NULL , '$src', '$copy' , '$Text', '$autor', '$Datum', '{$_POST["Typ"]}');"); Loguj ("Přidání obrázku do galerie."); } } else{}} else Chyba ("Nemáte dostatečná oprávnění!"); ?> Jenže při téměř každém spuštění to hodí tohle: Soubor byl nahrán na server. Souboru byla přidělena adresa ./Foto/07012008190908.jpg. Warning: getimagesize(../Foto/07012008190908.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home/ftpsite/www/admin/galerie.php on line 5 Warning: Division by zero in /home/ftpsite/www/admin/galerie.php on line 9 Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/ftpsite/www/admin/galerie.php on line 10 Warning: imagecreatefromjpeg(../Foto/07012008190908.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/ftpsite/www/admin/galerie.php on line 11 Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/ftpsite/www/admin/galerie.php on line 12 Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/ftpsite/www/admin/galerie.php on line 13 Pochopil jsem, že se nepovedlo načíst obrázek pro zmenšení. Jak mám upravit kód, aby to nedělalo tuhle chybu? Díky moc za odpovědi. |
||
Akacko Profil |
#2 · Zasláno: 7. 1. 2008, 19:27:07 · Upravil/a: Akacko
Pechy
podle errorů soudím, že máš špatně zadanou cestu k obrázkům, dělíš nulou (podle zákonů matematiky dělit nulou nejde, aspoň ne na základní škole :)) |
||
Pechy Profil * |
#3 · Zasláno: 7. 1. 2008, 19:45:20
dělíš nulou (podle zákonů matematiky dělit nulou nejde, aspoň ne na základní škole :))
dělení nulou je proto, že se funkci getimagesize nepovede načíst velikost obrázku. |
||
Akacko Profil |
#4 · Zasláno: 7. 1. 2008, 20:01:37
Pechy
to se dá ošetřit |
||
Mastodont Profil |
#5 · Zasláno: 7. 1. 2008, 20:38:30
Pechy
if ($OrigWidth == 0 or $OrigHeight ==0) { ... $NewHeight = $NewHeight / $OrigWidth; To vypadá, jako že tou nulou chceš dělit schválně. Ale ono to fakt nejde. |
||
Pechy Profil * |
#6 · Zasláno: 9. 1. 2008, 19:13:45
Dobrý, už jsem na to přišel.
Díky |
||
Časová prodleva: 16 let
|
0