Bilderupload, wer weis Lösung?

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

  • Bilderupload, wer weis Lösung?

    Hey Leute!

    Habe für nen Bekannten ein Galleryscript gecodet, mit dem ich jedoch ein kleines Problemchen habe:

    1) Er wählt das Bild aus und lädt es hcoh.
    2) Die Bilddatei wird umbenannt in eine 15 stellige Zeichenkette und dann hochgeladen. Der Name wird zudem in die DB eingefügt. Damit kein Dateiname doppelt vorkommt, habe ich ne ne Endlosschleife genommen, und lasse solange eine Zeichenkette erstellen und frag die DB damit ab, bis sichergestellt ist, dass der erstellte Dateiname noch nicht vergeben ist (klar, je mehr Namen drin sind, umso länger dauert das).
    3) Das Bild wird zu einem Thumb verarbeitet.
    4) Es wird zusätzlich noch mit einem Logo in einer Ecke versehen.

    Das ganze funktioniert soweit ganz gut, bis auf eine Kleinigkeit:

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1600 bytes) in /var/www/web1/html/gallery/adm/logo.php on line 8

    Einiege Bilder lassen sich hochladen, bei anderen kommt wiederum diese Fehlermeldung.

    Das hier ist das Logo Script:

    PHP-Code:
    <?php
    $origimage 
    "../bilder/$bild";
    $logoimage "logo.jpg";
    $newimage "../bilder/$bild";
    $origsize getimagesize($origimage);
    $logosize getimagesize($logoimage);
    $logo_im imagecreatefromjpeg($logoimage);
    $orig_im imagecreatefromjpeg($origimage);
    imagecopy($orig_im$logo_im$origsize[0] - $logosize[0], $origsize[1] - $logosize[1], 00$logosize[0], $logosize[1]);
    imagejpeg($orig_im"../bilder/$newimage");
    ?>
    Leider kenne ich mich nicht allzusehr aus mit den Fehlermeldungen. Bei mir auf dem Testrechner läuft das Script ja einwandfrei, bloß auf der Domain von meinem Bekannten halt nicht.

    Weis irgendwer ne Lösung dafür?

  • #2
    Ich denke, dass auf dem Server die maxFilesize für einen Dateiupload zu klein ist [siehe phpinfo()]

    --

    OffTopic:
    ... habe ich ne ne Endlosschleife genommen...
    Eine Endlosschleife ist was anderes
    [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

    [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

    [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
    (from here)

    Kommentar


    • #3
      Re: Bilderupload, wer weis Lösung?

      Original geschrieben von PHPler
      ne Endlosschleife genommen, und lasse solange eine Zeichenkette erstellen und frag die DB damit ab,
      Nie nie nie nie nie nie nie Queries in Schleifen packen!
      O.K. je wenn du die Zeichenketten geschickt erzeugst wird die Schleife in 99,99% der Fälle nur einmal durchlaufen, aber trotzdem würde ich im Dateisystem prüfen, ob's die Datei schon gibt, und nicht in der DB.

      Die Fehlermeldung sagt aus, dass dein Script mehr Speicher frisst, als es darf (in der php.ini festgelegt), und deshalb abbricht.
      Wenn der von dir gepostete Code das komplette Script ist, dann liegt es vermutlich daran, dass das Bild, dass du bearbeitest, zu groß ist.
      Wenn das Script in Wirklichkeit allerdings länger ist, kann es auch gut sein, dass du an anderen Stellen viel Speicher verschwendest.
      hopka.net!

      Kommentar


      • #4
        Hm, n Bekannter von mir administriert ja den Server, der meinte da gäbe es keine Datengrößenbegrenzung für den Upload...

        PHP Info sagt auch nix über maxFilesize aus!

        Kommentar


        • #5
          @Hopka: Ne, ich hab ja noch das Thumb Script:

          PHP-Code:
          <?php 

          $PicPathIn
          ="../bilder/"
          $PicPathOut="../bilder/"

          // Bilddaten feststellen 
          $size=getimagesize("$PicPathIn"."$bild"); 
          $breite=$size[0]; 
          $hoehe=$size[1]; 
          $neueBreite=100
          $neueHoehe=intval($hoehe*$neueBreite/$breite); 

          //Anmerkung: Das GIF-Format wird von neueren PHP-/GDlib-Versionen nicht mehr unterstüzt! 
          if($size[2]==1) { 
          // GIF 
          $altesBild=ImageCreateFromGIF("$PicPathIn"."$bild"); 
          $neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe); 
          imageantialias($neuesBildtrue); 
          ImageCopyResampled($neuesBild,$altesBild,0,0,0,0
          $neueBreite,$neueHoehe,$breite,$hoehe); 
          ImageGIF($neuesBild,"$PicPathOut"."TN"."$bild"); 


          if(
          $size[2]==2) { 
          // JPG 
          $altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild"); 
          $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe); 
          imageantialias($neuesBildtrue); 
          ImageCopyResampled($neuesBild,$altesBild,0,0,0,0
          $neueBreite,$neueHoehe,$breite,$hoehe); 
          ImageJPEG($neuesBild,"$PicPathOut"."TN"."$bild"100); 


          if(
          $size[2]==3) { 
          // PNG 
          $altesBild=ImageCreateFromPNG("$PicPathIn"."$bild"); 
          $neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe); 
          imageantialias($neuesBildtrue); 
          ImageCopyResampled($neuesBild,$altesBild,0,0,0,0
          $neueBreite,$neueHoehe,$breite,$hoehe); 
          ImagePNG($neuesBild,"$PicPathOut"."TN"."$bild"); 



          $Thumbnail=$PicPathOut."TN".$bild

          ?>
          Kann man den Speicher nicht irgendwie wieder freigeben oder so?

          Kommentar


          • #6
            Die var heißt nat nicht maxFilesize.

            Schau mal nach "post_max_size" (unter PHP-Core) das müsste sie sein, und die hat wahrscheinlich 8M(B)
            [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

            [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

            [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
            (from here)

            Kommentar


            • #7
              Hm jo, hat 8MB. Habs jetzt wohl auch mitbekommen dass man die in der PHP Ini höcherstellen kann. Da ich aber keinen Zugriff drauf hab, lässt sich das irgendwie umgehen?

              Kommentar


              • #8
                ja wenn dein Bekannter den Server administriert ...
                [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                (from here)

                Kommentar


                • #9
                  Ich meinte umgehen ohne die INI zu verändern!

                  Kommentar


                  • #10
                    Wenn post_max_size dafür verantwortlich wäre, dann würde die Fehlermeldung anders aussehen.

                    memory_limit ist das, was du erhöhen musst.

                    Den Speicher, der von Bildern belegt wird, kannst du mit image_destroy wieder freigeben.
                    hopka.net!

                    Kommentar


                    • #11
                      Dann hör auf Hopka, der kennt sich aus! *schleim*
                      [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                      [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                      [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                      (from here)

                      Kommentar


                      • #12
                        Ein Pixel brauch bekanntlich 24bit = 3kb
                        z.B: Bild 1200 x 1600 x 3kb = 5.76 MB Speicherbedarf!

                        http://codingforums.com/showthread.p...631#post201631
                        Zuletzt geändert von E.T.; 01.06.2004, 21:46.
                        Download ET-Chat v3.x.x

                        Kommentar


                        • #13
                          @E.T.
                          24 bit = 3 Byte (nicht kb - war bestimmt nur ein doppelter Tippfehler )
                          Deine Rechnung stimmt allerdings trotzdem so ungefähr - 1 KiloByte ist in Wirklichkeit jedoch 1024 Byte.
                          hopka.net!

                          Kommentar

                          Lädt...
                          X