Problem beim generieren von dynamischer Bilder

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem beim generieren von dynamischer Bilder

    Hat jemand im Ansatz eine Idee warum hier, wenn man auf ein Bild klickt und die Bilder zum durchklicken kommen, nicht alle Bilder angezeigt bekommt??? Manche gehen, manche nicht, total willkürlich

    Ich hab überlegt ob es am Dateisystem Linux vs Windows liegen kann, kanns aber auch nicht denn:

    Server ist Debian Linux
    http://www.kernigekirsche.de/?page=gallery&id=1

    Das gleiche Script, Server ist ein LFS Linux.
    http://www.doomzone.de/projekte/kirs...e=gallery&id=1

    Lokal bei mir mit Gentoo und Windows 2000 geht es auch.

    Wieso zur Hölle nur nicht auf dem kernigekirsche.de?

    diashow.php

    PHP-Code:
    <?php
    echo"
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN'
       'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='de'>
    <head>
    <title>Gallery</title>
    <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
    <meta name='keywords' content=''/>
    <meta name='description' content='easyImage script by Florian Kr&auml;mer' />
    <meta name='Copyright' content='Florian Kr&auml;mer' />
    <meta name='Author' content='Florian Kr&auml;mer' />
    <style type='text/css'>
    <!--
    body {
        background-color: #ffffff;
        font-family:Arial, Helvetica, sans-serif;
        font-size:13px;
        color:#000000;
    }
    a.arrow {
        text-decoration: none;
        color: #000000;
        font-weight:bold;
    }
    -->
    </style>
    </head>
    <body>"
    ;


    $height 480;

    $getdir $_GET['dir'];
    $dir "gallery/".$_GET['dir']."";

    // open the dir
    $handle=opendir ($dir);
    $files = array();
    $i 0;
    while (
    $file readdir ($handle)) 
    {
      if (
    preg_match("/(.*?).jpg/i",$file))
      {
          
    $files[] = $file;
        
    $i $i 1;
      }
    }
    closedir($handle);


    $sum $i -1;

    if (!isset (
    $_GET['nr'])) 
      { 
    $pic 0; }
    else
      { 
    $pic $_GET['nr']; }

    $image       getimagesize("$dir/".$files[$pic]."");
    $imagewidth  $image[0];
    $imageheight $image[1];

    $forward $pic 1;
    $back    $pic 1;

    if (
    $back == -1)
    $back $sum; }

    if (
    $forward == $sum +1)
    $forward 0; }


    if (
    $nr == 0)

        
    $pubpic 1;
        
    $pubsum $sum 1;
    }
    else 
    {
        
    $pubpic $pic 1;
        
    $pubsum $sum 1;
    }

    echo 
    " <div align='center'>\n
            <img src='thumb.php?thumb=yes&amp;height=
    $height&amp;file=$dir/".$files[$pic]."' 
    alt='Image'></img><br />
            <a href='"
    .$_SERVER['PHP_SELF'].
    "?height=$height&amp;dir=$getdir&amp;nr=$back' class='arrow'>◄ zur&uuml;ck</a>
                     -- Bild 
    $pubpic von $pubsum -- <a href='".$_SERVER['PHP_SELF']."
    ?height=
    $height&amp;dir=$getdir&amp;nr=$forward
                    class='arrow'>weiter ►</a><br />
           </div>
    </body>
    </html>"
    ;
    ?>
    thumb.php
    PHP-Code:
    <?
    // options
    $disable_path      = "no"; // yes or no, disables the path option
    $thumbs_max_width  = 120;  // maximum thumbnail width in pixel
    $thumbs_max_height = 90;   // maximum thumbnail height in pixel
    $thumbs_quality    = 90;   // 0 (bad) up to 100 (good) percent quality 
    $thumbs_border     = 0;    // 0 = no 1 = yes, border or not ?
    $thumbs_per_row    = 5;       // 0 = no limit, 3 = 3 images per row for example

    // get vars
    $thumb  = $_GET['thumb'];
    $path   = $_GET['path'];

    // if custom resizing is wanted
    if (isset ($_GET['width']))
    {
        $thumbs_max_width = $_GET['width'];
    }

    if (isset ($_GET['height']))
    {
        $thumbs_max_height = $_GET['height'];
    }

    if ($disable_path == "yes") 
    {
       $dir = "./";

    elseif (!isset ($path)) 
    {
       $dir = "./";

    else 
    {
       $dir = "./$path";
    }

    // if the var thumb is set, generate a thumbnail
    if (isset ($thumb))
    {
        $file = $_GET['file'];
        $img  = imagecreatefromjpeg($file);

        // get the height and width of the image
        $imgX = ImageSX($img);
        $imgY = ImageSY($img);
        $x = $imgY / $imgX;
        $y = $imgX / $imgY;
        
        
    if (isset ($_GET['width']))
    {
        // maximum width of the thumbs
        $width      = $thumbs_max_width;
        $height     = $width * $x;
        $quality = $thumbs_quality;
    }
    else
    {
        // maximum height of the thumbs
        $height     = $thumbs_max_height;
        $width      = $height * $y;
        $quality = $thumbs_quality;
    }
        
        
        // generate the new image
        $imgnew = ImageCreateTrueColor($width,$height);
        ImageCopyResized($imgnew,$img,0,0,0,0,$width,$height,$imgX,$imgY);
        $pic     = imagejpeg($imgnew,'',$quality);

        imagedestroy($imgnew);
    }
    else
    {    
        echo "Please use thumb.php with ?width=XXXX";
    }
    ?>
    Zuletzt geändert von burzum; 01.12.2004, 18:28.

  • #2
    Guck mal, welche Versionen der GD-Bibliothek auf den einzelnen Servern installiert sind!

    gdinfo
    phpinfo
    hopka.net!

    Kommentar


    • #3
      Lokal:
      gdlib 2.0.15
      php 4.3.4

      www.doomzone.de
      gdlib 2.0.12
      php 4.3.2

      www.kernigekirsche.de
      gdlib 2.0.28
      php 4.3.9-1.dotdeb.3

      Kommentar


      • #4
        vielleicht sendest du mal einen header() ?
        Kissolino.com

        Kommentar


        • #5
          brich bitte deinen code um, damit man hier nicht meterweit querscrollen muss!

          (dann gibt's auch 'nen tipp bzgl. des fehlers :-))
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Besser?

            Kommentar


            • #7
              viel besser :-)

              so, nun zum problem: es fällt ja ziemlich schnell auf, dass es offenbar die "großen" bilder sind, die probleme machen (also die, wo die thumbnails schon vom format her breiter sind).

              und wenn man dann mal so ein bild direkt aufruft, sieht man (header sendest du ja"dankenswerter" weise keine *g*) folgende meldung:
              Code:
              Fatal error: Allowed memory size of 16777216 bytes exhausted
              (tried to allocate 2560 bytes) in /home/www/ph90/html/thumb.php
              on line 74
              damit dürfte wohl klar sein, wo das problem liegt - zum bearbeiten der größeren bilder steht einfach nicht genügend speicher zur verfügung.
              also noch mal die konfiguration vergleichen bzgl. des memory limits, und dann auf dem anderen server dieses erhöhen (lassen), sofern möglich.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Ok, , hätte ich auch selbst draufkommen können *schäm*...

                Und jetzt zum Lernfaktor der Sache:

                Welche Variable in der httpd.conf oder php.conf ist für den Speicher zuständig? Oder wo finde ich sie generell?

                Kann man diese Speichergeschichte irgendwie anders lösen als durch erhöhen des Wertes?

                Wieso "dankenswerter Weise" ?
                Sollte ich?
                Zuletzt geändert von burzum; 02.12.2004, 16:11.

                Kommentar


                • #9
                  Original geschrieben von burzum
                  Welche Variable in der httpd.conf oder php.conf ist für den Speicher zuständig? Oder wo finde ich sie generell?
                  http://www.php.net/manual/de/ini.sec...i.memory-limit

                  Kann man diese Speichergeschichte irgendwie anders lösen als durch erhöhen des Wertes?
                  nur durch kleinere bilder :-)
                  zum bearbeiten mit den grafik-funktionen muss ein bild vollständig entpackt im speicher liegen, daran führt kein weg vorbei.

                  Wieso "dankenswerter Weise" ?
                  Sollte ich?
                  weil es hier das ansehen der fehlermeldung einfacher macht :-)

                  solltest du aber schon, weil bilder auch mit dem entsprechenden Content-type header ausgeliefert werden sollten - du lieferst sie derzeit als text/html aus, was sie aber definitiv nicht sind.
                  und da könnten "strengere" browser wie beispielsweise mozilla das anzeigen auch bei korrekten bilddaten verweigern.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X