| 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: 18 let
|
|||
0