Autor Zpráva
Pechy
Profil *
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
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 *
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
Pechy
to se dá ošetřit
Mastodont
Profil
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 *
Dobrý, už jsem na to přišel.
Díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: