JPEG Thumb problem .. script fertig .. mal geht mal net ;(

melistik

Erfahrenes Mitglied
nabend,
Ich habe ein kleines Script geschrieben, womit man
JPG-Datein hochladen kann und automatisch zu diesen dann ein Thumb erstellt wird.
Es klappt auch bei vielen Bildern, doch leider nicht bei allen
Nun wollte ich fragen, wie ich das änderen kann oder geht soetwas garnet,
dass es immer klappt .... Es scheint etwas mit der JPG Konvertierung zu tun glaube ich.
Das Komische ist, dass man auch aus Einigen nicht die Größe errechenen kann ...

hier ein Link zum Script damit man sich das vrostellen kann...hier...
der Code ;) ->
PHP:
<?
$template = "template.html";
$absolute_path = "/www/htdocs/v085124/files/imagetest/pics"; //Absolute Pfad
$PicPathIn="http://www.ppone.net/files/imagetest/pics/";
$PicPathOut="/www/htdocs/v085124/files/imagetest/pics/thumb/";
$PicPath = "http://www.ppone.net/files/imagetest/pics/thumb/";
$pictyp = array (".jpg",".JPG",".jpeg",".JPEG");
$perpage = 3;
$sizelimit = "no"; //Size Limit?
$sizebytes = "200000"; //Size in Bytes
$dir = "dir";
$quali = "100";  //Quali in % aber ohne % hinschreiben =)
$thumbmax = 200;


// Funktionen  Anfang ....
function showpic ($name,$PicPath,$hoehe,$breite) {
         if (($breite > 1024) OR ($hoehe > 768)) {
         echo "<a target='_blank' href='$PHP_SELF?db=pic&picname=$name'><img src=$PicPath$name></a>";
         }
         else {
         echo "<a href='$PHP_SELF?db=pic&picname=$name'
         target='neuesfenster'
         onclick=\"window.open('','neuesfenster','top=2,screenX=2,left=2,screenY=2,height=$hoehe,width=$breite,status=yes')\">
         <img src=$PicPath$name></a><br><br>";
         }}
         
function pages ($page,$seiten){
         echo "<center><br>";
         if  ($page>1) {
         $i=$page-1;
         echo "<A HREF='$PHP_SELF?page=$i'>&lt;back</A>&nbsp;";
         }
         for ($i=1; $i<=$seiten; $i++) {
         if ($i==$page) {
         echo "<A HREF='$PHP_SELF?page=$i'><b>$i</b></A>&nbsp;";
         } else {
         echo "<A HREF='$PHP_SELF?page=$i'>$i</A>&nbsp;";
         } }
         if  ($page<$seiten) {
         $i=$page+1;
         echo "<A HREF='$PHP_SELF?page=$i'>next&gt;</A>";
         }
         echo "</center>";
}

if (! isset($page))
    { $page = 1;}

// Funktionen Ende ....
// Anfang der Anzeige ....
if ((!isset ($db)) OR ($db=="")) {

    $open_template = fopen ($template, "r");
    $temp = fread($open_template, filesize($template));
    $temp = ereg_replace("{post}","$PHP_SELF?db=post",$temp);
    $temp = stripslashes($temp);

// öffnen des Folders
        $fp = @opendir($absolute_path);
// auslesen der Bilder
	while ($file = readdir($fp))
	{
        $ext = strrchr($file,'.');
        if (in_array($ext,$pictyp)) {
	$name[] = $file;
	$size=getimagesize("$PicPathIn"."$file");
	$breite[] = $size[0];
        $hoehe[] = $size[1];
        }
	}
	@closedir($fp);
	$seiten = ceil ((sizeof($name)) / $perpage);
//Anzeige der Bilder
        $total =  sizeof($name) ;
//ForSchleife mit Ausgabe
        $picnumber = 1;
	for ($i = (($total-1) - ($perpage*($page-1))); $i >= ($total - (($perpage*$page)));$i--) {
	$showpic = "";
        
        if ((($breite[$i]) >= 1024) OR (($hoehe[$i]) >= 768)){
        $showpic = "<a target='_blank' href='$PHP_SELF?db=pic&picname=$name[$i]'><img border='0' src=$PicPath$name[$i]></a>";
        }
//bei einigen kann man nicht immer Aulesen ....
        else if ((($breite[$i]) == "") OR (($hoehe[$i]) == "")){
        $showpic = "<a target='_blank' href='$PHP_SELF?db=pic&picname=$name[$i]'><img border='0' src=$PicPath$name[$i]></a>";
        }
        else {
        $showpic = "<a href='$PHP_SELF?db=pic&picname=$name[$i]'
        target='neuesfenster'
        onclick=\"window.open('','neuesfenster','top=2,screenX=2,left=2,screenY=2,height=$hoehe[$i],width=$breite[$i],status=yes')\">
        <img border='0' src='$PicPath$name[$i]'></a>";
        }
        
        if (!isset ($name[$i])) {$showpic = ""; }
        $temp = ereg_replace("{pic$picnumber}","$showpic",$temp);
        $temp = stripslashes($temp);
        $picnumber++;
        }
        }
if ($db == "post") {
        $ext = strrchr($file,'.');
        if (!in_array($ext,$pictyp)) {
        if (file_exists("$absolute_path/$file_name")) {
        die("<center>Datei existiert bereits!</center>");
        }
        if (($sizelimit == "yes") && ($file_size > $sizebytes)) {
        die("<center>Datei ist zu groß. Sie darf nicht größer als $sizebytes bytes sein.</center>");
        }
        $file_name = str_replace(' ','_',$file_name);
        @copy($file, "$absolute_path/$file_name") or die("<center>Konnte nicht upgeloaded werden</center>");
        } else {
        die("<center>Datei ist kein Unterstützer Bildtyp<br> JPG und PNG sind nur zugelassen ...</center>");
        }
        header("Location: $PHP_SELF?db=ok&file=$file_name");
        }
        if ($db == "ok") {
// Orginalbild
        $bild = $file;
// Bilddaten ermitteln
        $size=getimagesize("$PicPathIn"."$bild");
        if ($size[0] < $thumbBreite)
        {
        $copyfile = $PicPathOut."".$bild;
        $original_file =$absolute_path."/".$bild;
        copy($original_file , $copyfile);
        }
        if (( $size[0] >= $thumbmax) OR ($size[1] >= $thumbmax)) {
        $factor1 = $size[0] / $thumbmax;
        $factor2 = $size[1] / $thumbmax;
        if ($factor1 >= $factor2) {$factor = $factor1;} else {$factor = $factor2;}
        $thumbHoehe = intval($size[1] / $factor);
        $thumbBreite = intval($size[0] / $factor);
        $edited = true;
        }
        if ($edited) {
        $src_img = imagecreatefromjpeg($absolute_path."/".$bild);
        $dst_img = imagecreatetruecolor($thumbBreite,$thumbHoehe);
        imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumbBreite, $thumbHoehe, $breite, $hoehe);
        imagejpeg($dst_img, $PicPathOut."".$bild, $quali);
        imagedestroy($src_img);
        imagedestroy($dst_img);
        }}
if ($db == "pic") {
        echo "<html><body topmargin='0' leftmargin='0' rightmargin='0' bottommargin='0'>
        <img src='$PicPathIn$picname'></body></html>"; }
        
        echo $temp;
        pages ($page,$seiten);
?>

----------------------------------------------------------------------------------------------------
Gibt es sonst noch eine Andere hierfür bessere Bibliothek ? anstelle von GD
 
Zuletzt bearbeitet:
Es macht einfach keinen Spass 150 Zeilen Quellcode vorgesetzt zu bekommen, mit der Bemerkung "manchmal geht's nicht".

Was haben die Bilder gemeinsam, bei denen es nicht funktioniert?
Werden Fehlermeldungen angezeigt?
Werden die Bilder überhaupt hochgeladen, oder wird nur das Thumb nicht erstellt?
Welchen Zeilen betrifft das Problem (wahrscheinlich)?

Fragen über Fragen.

snuu
 
Zurück