Webstatt.org - Community seit 2006 - 2012 (2024?)

"Division by zero" weil aus "." und ".." ein Thumbnail erstellt werden "soll". Wie Fehler vermeiden?

Avatar user-118
13.04.2006 19:13

Das ist mein code:


Die Funktion:
function thumb($file, $save, $width, $height, $prop = TRUE) {
@unlink($save);
$infos = @getimagesize($file);
if($prop) {
// Proportionen erhalten
$iWidth = $infos[0];
$iHeight = $infos[1];
$iRatioW = $width / $iWidth;
$iRatioH = $height / $iHeight;
if ($iRatioW < $iRatioH)
{
$iNewW = $iWidth * $iRatioW;
$iNewH = $iHeight * $iRatioW;
} else {
$iNewW = $iWidth * $iRatioH;
$iNewH = $iHeight * $iRatioH;
} // end if
} else {
// Strecken und Stauchen auf Größe
$iNewW = $width;
$iNewH = $height;
}

if($infos[2] == 2) {
// Bild ist vom Typ jpg
$imgA = imagecreatefromjpeg($file);
$imgB = imagecreatetruecolor($iNewW,$iNewH);
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
$iNewH, $infos[0], $infos[1]);
imagejpeg($imgB, $save);
} elseif($infos[2] == 3) {
// Bild ist vom Typ png
$imgA = imagecreatefrompng($file);
$imgB = imagecreatetruecolor($iNewW, $iNewH);
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
$iNewH, $infos[0], $infos[1]);
imagepng($imgB, $save);
} else {
return FALSE;
}
}



damit wird die Funktion aufgerufen:
// Quelldatei
$from = $_POST['file'].'/'.$sFilename;
// Ziel 1+2
$to1 = $_POST['file'].'/th/'.$sFilename;
// Funktionsaufruf mit Einbehaltung der Proportionen
thumb($from, $to1, 170, 170, TRUE);


damit wird der Bilderordner geöffnet:
$hDir = opendir($_POST['file']);

while($sFilename = readdir($hDir)) {
$sFilepath = $sDirpath.'/'.$sFilename;
# jpeg, gif und png rausfiltern
$aPicinfo = @getimagesize($sFilepath);
if(in_array($aPicinfo[2], array(1,2,3), true))
$aPics[] = $sFilename;
$count++;


Ein beispiel wie $_GET['file'] aussehen kann:
./gallery/pics/galleriename



und der Fehler:

Warning: Division by zero in C:\Programme\xampp\htdocs\webdesign\Picture-Parade\Picture-Para.de mit Userbereich\gallery\admin\galleryeintrag.php on line 25

Warning: Division by zero in C:\Programme\xampp\htdocs\webdesign\Picture-Parade\Picture-Para.de mit Userbereich\gallery\admin\galleryeintrag.php on line 26
Thumbnail von . erfolgreich erstellt.

Warning: Division by zero in C:\Programme\xampp\htdocs\webdesign\Picture-Parade\Picture-Para.de mit Userbereich\gallery\admin\galleryeintrag.php on line 25

Warning: Division by zero in C:\Programme\xampp\htdocs\webdesign\Picture-Parade\Picture-Para.de mit Userbereich\gallery\admin\galleryeintrag.php on line 26
Thumbnail von .. erfolgreich erstellt.


Ich bin schon soweit gekommen, dass die Funktion versucht von "." und ".." ein Thumbnail zu erstellen, was aber ja nicht möglich ist.... Wie kann ich nun dafür sorgen ,dass dieser Fehler nicht mehr auftritt? Das skript läuft zwar , und die Thumbnails werden auch erstellt aber der Fehler stört mich trotzdem...

ich habe irgendwo mal was davon:
while (false !== ($file = readdir($action))) 
{
$count=0;
if ($file != ".." && $file != "."zwinkern
{
if (strpos($file, "."zwinkern === false)
{
}
}
}


Wie muss ich das nun bei mir einbauen ?

Danke denjenigen, die sich die Mühe gemacht haben, diesen endslangen Text zu lesen und schonmal danke im Vorraus.

mfg Alex


edit:// ich bin so blöd.... Oh Mensch die ganze zeit nen brett vor dem Kopf, dabei ist es so einfach ...

gelöst hab ich so.

if ($sFilename != "." && $sFilename != ".."zwinkern
{
thumb($from, $to1, 170, 170, TRUE);
}

Ich brauche keine Signatur
Avatar user-253
13.04.2006 19:20

Hier würde es Sinn machen:

$hDir = opendir($_POST['file']);

while($sFilename = readdir($hDir)) {
if(($sFilename != '.'zwinkern && ($sFilename != '..'zwinkern) {
$sFilepath = $sDirpath.'/'.$sFilename;
# jpeg, gif und png rausfiltern
$aPicinfo = @getimagesize($sFilepath);
if(in_array($aPicinfo[2], array(1,2,3), true))
$aPics[] = $sFilename;
$count++;
// ...
}
}


Michael

// edit hatte sich ja eh erledigt

Avatar user-118
13.04.2006 19:24

$hDir = opendir($_POST['file']);

while($sFilename = readdir($hDir)) {
if(($sFilename != '.'zwinkern && ($sFilename != '..'zwinkern && ($sFilename != 'th'zwinkern) {
$sFilepath = $sDirpath.'/'.$sFilename;
# jpeg, gif und png rausfiltern
$aPicinfo = @getimagesize($sFilepath);
if(in_array($aPicinfo[2], array(1,2,3), true))
$aPics[] = $sFilename;
$count++;
// ...
}
}


habs nun auch so gemacht.
Echt klasse, man postet etwas und hat 10 Minuten später ne Antwort...
Gäbe es einen "erledigt" Button würde ich ihn nun klicken zwinkern

mfg Alex

Ich brauche keine Signatur