bild hochladen und verkleinern

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

  • bild hochladen und verkleinern

    Hi!

    Folgendes:
    Ich lade mit einem Formular ein Bild hoch. Dieses wird auf dem Server gespeichert und anschließend verkleinert (Breite 220, Höhe proportional dazu). Dies funktioniert so weit ganz gut. Nun kommt es bei manchen Bildern vor, dass auf dem Server nur ein schwarzes Bild abgelegt ist. Woran kann das liegen dass es bei manchen Bildern geht, und bei anderen nicht. Leider konnte ich keine regelmäßigkeit feststellen, wann es geht und wann nicht. Nachfolgender Code ist für das ganze zuständig...

    Über eure Hilfe würde ich mich freuen!

    PS: Das ganze liegt auf einem 1&1 Webspace! Ich habe also keine GD2 Lib! Sonder nur die 1.6.


    Danke

    PHP-Code:
    $bildpfad "./bilder_objekte/".$_REQUEST['id'].".jpg";
    copy($_FILES['bild']['tmp_name'], $bildpfad);
            
    $quellbild $bildpfad;
          
    $info=getimagesize("$quellbild");
    $breitalt=$info[0];
    $hochalt=$info[1];

    $breit="220";
    $hoch=ceil($hochalt*$breit/$breitalt);

    $bildalt=imagecreatefromjpeg($quellbild);
    $bildneu=imagecreate($breit,$hoch);
    imagecopyresized($bildneu,$bildalt,0,0,0,0,$breit,$hoch,$breitalt,$hochalt);
    imagejpeg($bildneu,$quellbild); 

  • #2
    kann es sein, dass du ab und an ein CMYK bild lädtst ... oder eines mit
    alpha-kanal oder mit pfad?
    Kissolino.com

    Kommentar


    • #3
      dürfte normal nicht der fall sein, da alle bilder mit der gleichen digicam gemacht werden...
      vom format,... sind es also immer die gleichen bilder!

      Kommentar


      • #4
        schau dir mal die user-notes im manual an http://de.php.net/manual/de/function...pyresized.php, scheint so als gäbs schonmal "farbfehler" ... die lösung steht da auch
        Kissolino.com

        Kommentar


        • #5
          ich hab mir das jetzt mal durchgelesen und verschiedene sachen getestet! ich bin jetzt soweit dass ich bei einem normalen bild, das vorher auch ging, wesentlich bessere farben erhalte. schwarze bilder hatte ich bis jetzt noch keine...

          sollte alles funktionieren geht ein rießen dank an dich... !!!!!


          DANKE !!!!!!!!!!!!!!

          Kommentar


          • #6
            also das problem besteht noch immer... :-(

            hab noch jemand eine idee waran es liegen könnte?

            Kommentar


            • #7
              kannst du das problem nicht näher einkreisen?
              - welche gemeinsamkeiten haben die bilder, die nicht gehen?
              - läuft der code zB in einer schleife, so dass mehrere bilder hintereinander bearbeitet werden? => imagedestroy() nicht vergessen
              - ...
              Kissolino.com

              Kommentar


              • #8
                schleife nein!
                das ist auch nur ein bild das immer hochgeladen wird!
                imagedestroy hab ich ja nicht, da ich ein bild hochlade und das dann verkleinere...
                ich lasse mir jetzt mal bilder zuschicken die nicht gehen. ich lade die nämlich nicht hoch, das machen andere!

                Kommentar


                • #9
                  Schau dir mal diesen Beitrag an:
                  http://www.php-resource.de/forum/sho...3929#post53929
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #10
                    habe mir den beitrag durchgelesen, finde aber keine lösung für mein problem! an was hattest du gedacht?

                    Kommentar


                    • #11
                      Das hier:
                      PHP-Code:
                      <?
                      // Bild klein
                      $K_MB = 100;
                      $K_MH = 150;

                      // Bild gross
                      $G_MB = 200;
                      $G_MH = 300;

                      if (!isset($abdiepost))
                          {
                      ?>
                      <FORM ENCTYPE="multipart/form-data" ACTION="<?PRINT $PHP_SELF;?>" METHOD=POST>
                          <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
                          Send this file: <INPUT NAME="UPLOADPIC" TYPE="file"><br>
                          Pic Name: <INPUT TYPE="TEXT" NAME="pic"><br>
                          <INPUT TYPE="submit" NAME="abdiepost" VALUE="Send File">
                      </FORM>
                      <?
                          }
                      else
                          {

                          $k_size = getimagesize ("$UPLOADPIC");
                          $g_size = getimagesize ("$UPLOADPIC");

                          $G_UPLOADPIC = "$UPLOADPIC";
                          $K_UPLOADPIC = "$UPLOADPIC";

                          // Schauen wir mal, ob wir das Bild verkleinen müssen
                          // Zuerst ob die maximale Breite nicht überschritten wird

                          // Verarbeitung kleines Bild
                          if ($k_size[0] < $K_MB)
                              {
                              // Also die Breite passt, da müssen wir nix tun
                              $K_NB = $k_size[0];
                              $K_NH  = $k_size[1];
                              }
                          else
                              {
                              // Jetzt ist also Handlungsbedarf
                              // Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
                              $ProportionFaktor = $k_size[0] / $K_MB;
                              $K_NB = $K_MB;
                              $K_NH  = round($k_size[1] / $ProportionFaktor);
                              }

                          // Verarbeitung grosses Bild
                          if ($g_size[0] < $G_MB)
                              {
                              // Also die Breite passt, da müssen wir nix tun
                              $G_NB = $g_size[0];
                              $G_NH  = $g_size[1];
                              }
                          else
                              {
                              // Jetzt ist also Handlungsbedarf
                              // Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
                              $GProportionFaktor = $g_size[0] / $G_MB;
                              $G_NB = $G_MB;
                              $G_NH  = round($g_size[1] / $GProportionFaktor);
                              }

                          // So das mit der Breite hätten wir, nun die Höhe

                          // Verarbeitung kleines Bild
                          if ($K_NH < $K_MH)
                              {
                              // Also die Hoehe passt, da müssen wir nix tun
                              }
                          else
                              {
                              // Jetzt ist also Handlungsbedarf
                              // Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
                              $ProportionFaktor = $K_NH / $K_MH;
                              $K_NH = $K_MH;
                              $K_NB  = round($K_NB / $ProportionFaktor);
                              }
                          
                          // Verarbeitung grosses Bild
                          if ($G_NH < $G_MH)
                              {
                              // Also die Hoehe passt, da müssen wir nix tun
                              }
                          else
                              {
                              // Jetzt ist also Handlungsbedarf
                              // Also berechnen wir den Faktor, damit wir auch die Höhe hinkriegen
                              $GProportionFaktor = $G_NH / $G_MH;
                              $G_NH = $G_MH;
                              $G_NB  = round($G_NB / $GProportionFaktor);
                              }

                          // Und jetzt geht es munter weiter <img src="images/smilies/biggrin.gif" border="0" alt="">

                          // Verarbeitung kleines Bild
                          if ($k_size[0] == $K_NB && $k_size[1] == $K_NH)
                              {
                              $UPLOADPIC_name = "$pic-klein.jpg";
                              // Da mußte das Bild nicht verkleinert werden
                              copy ($K_UPLOADPIC, "images/klein/$UPLOADPIC_name");
                              echo "$pic-klein.jpg = pic<br>bild kann so bleiben<br><hr>";
                              }
                          else
                              {
                              $UPLOADPIC_name = "$pic-klein.jpg";
                              // Hier wird PIC verkleinert und gespeichert
                              $td=imageCreateTrueColor($K_NB, $K_NH);
                              $ts=imageCreateFromJPEG($K_UPLOADPIC);
                              imageCopyResampled($td, $ts, 0, 0, 0, 0, $K_NB, $K_NH, $k_size[0], $k_size[1]);
                              imageJPEG($td,"images/klein/$UPLOADPIC_name");
                              echo "$pic-klein.jpg = pic<br>Bild musste geändert werden!<br><hr>";
                              }

                          // Verarbeitung grosses Bild
                          if ($g_size[0] == $G_NB && $g_size[1] == $G_NH)
                              {
                              $UPLOADPIC_name = "$pic-gross.jpg";
                              // Da mußte das Bild nicht verkleinert werden
                              copy ($G_UPLOADPIC, "images/gross/$UPLOADPIC_name");
                              echo "$pic-gross.jpg = pic<br>bild kann so bleiben";
                              }
                          else
                              {
                              $UPLOADPIC_name = "$pic-gross.jpg";
                              // Hier wird PIC verkleinert und gespeichert
                              $td1=imageCreateTrueColor($G_NB, $G_NH);
                              $ts1=imageCreateFromJPEG($G_UPLOADPIC);
                              imageCopyResampled($td1, $ts1, 0, 0, 0, 0, $G_NB, $G_NH, $g_size[0], $g_size[1]);
                              imageJPEG($td1,"images/gross/$UPLOADPIC_name");
                              echo "$pic-gross.jpg = pic<br>Bild musste geändert werden!";
                              }
                          }
                      ?>
                      Da hast du doch alles was du brauchst. Komplett funktionierender Code für JPG´s. Und da gibt es keine schwarzen Bilder.
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #12
                        so, ich habe nun herausgefunden woran es liegt! die bilder die schwarz werden sind alle ziemlich groß! 1600*1400 und ca. 600kb!

                        jetzt weiß ich allerdings nicht an welchem wert es genau liegt! die Bytegröße ist ja eigentlich nur durch die php.ini eingeschränket, oder? und darin steht der wert auf 20M! also müsste es an den abmessungen des bildes liegen! könnt ihr mir sagen ob es da evtl. eine maximale größe gibt, bis zu der die gd lib bilder bearbeiten kann?

                        danke

                        Kommentar


                        • #13
                          also, es liegt definitiv an den abmessungen des bildes!
                          ich hatte ein bild mit den abmessungen 1200x1600. dieses wurde beim upload schwarz.
                          nachdem ich es nur sehr gering auf 1150x1533 verkleinert habe, ging es. nach wiederholtem vergrößern (zur kontrolle) auf 1200x1600 geht es wieder nicht!

                          man lernt nie aus....!!

                          Kommentar


                          • #14
                            kannst du mal so ein bild irgendwo online stellen ... bei meiner
                            img-resize-classe laufen auch grössere bilder... ohne sich schwarz
                            zu färben
                            Kissolino.com

                            Kommentar


                            • #15
                              das wird zum beispiel schwarz!
                              Zuletzt geändert von magman; 27.07.2007, 15:10.

                              Kommentar

                              Lädt...
                              X