• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Thumbnail Script am Spinnen?

Status
Für weitere Antworten geschlossen.

gollum1990

Neues Mitglied
Hallo liebes Forum,

habe ein Problem mit nem Thumbnail Script das will nicht:

Fehler:
Warning: Division by zero in /www/htdocs/v105259/thumbnail.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v105259/thumbnail.php:1) in /www/htdocs/v105259/thumbnail.php on line 87

Warning: imagejpeg(): supplied argument is not a valid Image resource in /www/htdocs/v105259/thumbnail.php on line 89

Script:
PHP:
<?php
function ImageLoad ($filename) { 

/* Wächter: gibt 'false' zurück, wenn die Datei nicht existiert */ 
if (!file_exists ($filename)) { 
return false; 
} 

/* 
* GetImageSize ermittelt den Typ 
* der Bilddatei 
*/ 
$info = GetImageSize ($filename); 

switch ($info[2]) { 

/* 
* 2 = JPG 
*/ 
case 2: 
return ImageCreateFromJPEG ($filename); 
break; 

/* 
* 3 = PNG 
*/ 
case 3: 
return ImageCreateFromPNG ($filename); 
break; 

/* 
* Bei nicht unterstützten Typen wird 
* auch 'false' zurückgegeben 
*/ 
default: 
return false; 
break; 

} 
}
function ImageResize ($image, $width=false, $height=false) { 
/* 
* Wächter: gibt $image zurück, wenn $width & $height 
* beide nicht gesetzt sind 
*/ 
if (!$width && !$height) { 
return $image; 
} 

/* 
* Ermitteln der jeweiligen Originalwerte für 
* $width & $height, falls diese nicht gesetzt wurden 
*/ 
$width = (($width) ? $width : ImageSX ($image)); 
$height = (($height) ? $height : ImageSY ($image)); 

/* 
* Erzeugen eines leeren Bildes mit den neuen Maßen 
*/ 
$tmpimg = ImageCreateTrueColor($width, $height); 

/* 
* Kopieren des Bildes in das neue Format 
*/ 
ImageCopyResampled ( $tmpimg, $image, 0, 0, 0, 0, 
$width, $height, 
ImageSX ($image), ImageSY ($image)); 

/* 
* Rückgabe des neuen Bildes 
*/ 
return $tmpimg; 
}
function Image ($image, $type='jpg', $filename=false) { 
switch (strtolower ($type)) { 
/* 
* JPG 
*/ 
case 'jpeg': 
case 'jpg': 
if ($filename) { 
/* Speichern, wenn $filename gesetzt */ 
return ImageJPEG($image, $filename, 100); 
} else { 
/* Ausgabe */ 
ob_start();
header ("Content-type: image/jpg"); 
ob_end_flush();
return ImageJPEG($image, false, 100); 
} 
break; 

/* 
* PNG 
*/ 
case 'png': 
if ($filename) { 
/* Speichern, wenn $filename gesetzt */ 
return ImageCreateFromPNG ($filename, $filename); 
} else { 
/* Ausgabe */ 
header ("Content-type: image/png"); 
return ImageCreateFromPNG ($filename); 
} 
break; 

default: 
return false; 
break; 
} 
}
function ImageThumbnail ($image) { 
/* 
* Ermitteln der Abmessung des übergebenen Bildes 
*/ 
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1]; 

$maxsize = $_GET['w'];

/* 
* Errechnen der neuen Maße, proportional zu $maxsize 
*/ 
if ($width < $height) { 
$maxsize = (($maxsize<=$height) ? $maxsize : $height); 
$width = $maxsize/$height * $width; 
$height = $maxsize; 
} else { 
$maxsize = (($maxsize<=$width) ? $maxsize : $width); 
$height = $maxsize/$width * $height; 
$width = $maxsize; 
} 

/* 
* Verkleinern 
*/ 
return ImageResize ($image, $width, $height); 
}
$path = "/dateien/bilder/";
$pic = $_GET['img'];
$image = ImageLoad ($path.$pic); 
$image = ImageThumbnail ($image); 
Image ($image); 
?>
 
Werbung:
Und Deine Frage?
Die Fehlermeldungen sind doch aussagekräftig.

Du teilst irgendwo durch Null, das lernt man schon recht früh in der Schule, dass das ungültig ist, dann sendest Du Deine HTTP-Header, obwohl die weiter oben schon gesendet wurden, und zuletzt übergibst Du etwas, was kein Image ist.

Gruß,
-Efchen
 
Und Deine Frage?
Die Fehlermeldungen sind doch aussagekräftig.

Du teilst irgendwo durch Null, das lernt man schon recht früh in der Schule, dass das ungültig ist, dann sendest Du Deine HTTP-Header, obwohl die weiter oben schon gesendet wurden, und zuletzt übergibst Du etwas, was kein Image ist.

Gruß,
-Efchen

Richtig, in Zeile 130 steht:
PHP:
$maxsize = (($maxsize<=$width) ? $maxsize : $width); // $width == "" or $width == "0"
Außerdem steht in Zeile 140
PHP:
$path = "/dateien/bilder/";  
//oder meinst du:
$path = "dateien/bilder/";
Außerdem ist das Script nicht besonders sicher, da man so an alle Daten kommen könnte *.php?img=../../../passwörter.txt ;-)


mfg. Marlin
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben