Wie Rezise proportional mit GD?

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

  • Wie Rezise proportional mit GD?

    Hallo,
    ich hab mir ein kleines Script zum Hochladen von Bildern in einen Ordner geschrieben, mit hilfe eines Buches.

    Leider steht dort nicht drin, wie ich das Bild auch rezisen kann.

    Kann mir einer von Euch Profis das Script ein bischen erweitern, oder mir ein gutes Tutorial nennen?

    Hier der Code der 2. Seite:
    PHP-Code:
    if ($_FILES["foto"]["size"] > 0)
    {
        
    $foto true;
        
    preg_match("/(\.\w+)$/"$_FILES["foto"]["name"],$match);
        
    $typ $match[1];
        
    // Nur bestimmte Endungen werden erlaubt
        
    if (in_array(strtolower($typ), array(".jpg")))
        {
            
    $dateiname $umsSystem->user_id.$typ;
            
    $bildpfad preg_replace("/\/[^\/]+$/","",$_SERVER["SCRIPT_FILENAME"])."/images/userpics/";
            
    copy($_FILES["foto"]["tmp_name"], $bildpfad.$dateiname);
        }
    }
    else
    {
        
    $foto false;

    So wird das Bild überprüft und gespeichert, wobei die User_ID aus der DB der Bildname ist.

    Jetzt die Frage, wie krieg ich das mit dem Rezisen hin, wichtig wär aber eine proportionale Verkleinerung, z.B. breite = 300.

    GD 2< ist installiert!

    Ich hab schon viel hier gesucht und probiert, aber leider nichts brauchbares hinbekommen...

    Vielen vielen Dank schonmal für Eure Antworten.

  • #2
    Hmm, ich mach das immer so:

    Über getImageSize(datei) bekommst du die Größenangaben

    Dann öffnest du das Bild, bzw. läds es in ein Image Objekt, und erstellst ein neues mit deinen Wunschmaßen.
    Dann machst du ein ImageCopyResized (Parameter dazu sind auf php.net).

    Den Verkleinerungsfaktor kannst du mit $soll/$größe bestimmen. Damit multiplizierst du jetzt einfach alle Werte und schon ist das ganze proportional verkleinert bzw. vergrößert!

    So mach ich das jedenfalls immer.
    http://www.freehost-script.com

    Werden Sie Webhoster, mit Werbung auf den Userseiten, Php, Mysql, FTP

    Kommentar


    • #3
      Hi Kleinbreuer,
      hast du da evtl. ein Beispiel-Script für mich?

      Kommentar


      • #4
        $diff = $soll/$größe;

        Kommentar


        • #5
          Ich meinte ein Beispiel für das gesamte Resize-Script

          Kommentar


          • #6
            OffTopic:
            Bin ich Jesus? Wächst mir Gras aus der Tasche?


            Wie wärs, wenn du DEINEN Code auch SELBER schreibst?

            Kommentar


            • #7
              Danke Du Profi!

              Ist das hier ein Hilfe-Forum?!

              Ich glaube schon!

              Wenn ich keine Hilfe bräuchte und ein Profi in PHP wäre, würd ich hier keine Fragen stellen, sondern Antworten geben und den Usern helfen, die Hilfe benötigen.

              Ich benötige Hilfe!

              Sich ein Buch zu kaufen und dort die Scripte auszuprobieren und diese mit Hilfe anderer, mit Euch, zu erweitern, ist doch wohl in Ordnung, oder?

              Es würde mir auch schon helfen, wenn Du mir einen Tipp für ein Tutorial gibst., damit ich mir das Wissen, was Du schon hast, auch aneignen kann.
              Zuletzt geändert von Scott; 02.04.2003, 12:59.

              Kommentar


              • #8
                Hilfe bekommen JA, Scripts programmiert bekommen NEIN!

                diff = neuehöhe / altehöhe
                neuebreite = alte breite / diff

                jetzt brauchst du nur die neuen werte in dein resize einsetzen. Zufrieden? Dann wäre ein Danke wohl angebrachter, als ein Mach mal, sonst brauch ich dich nicht!

                Soviel dazu. es wurde doch schon alles gepostet, was du brauchst.

                Kommentar


                • #9
                  die Suche ist auch nen versuch wert. Ich trau mich zu wetten, dass die bein Eingabe von resize den ein oder anderen brauchbaren link ausspuckt
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Original geschrieben von Scott
                    Ich benötige Hilfe!
                    die hast du bekommen.

                    warum fragst du dann anschliessend nach dem kompletten code?
                    das geht über mein verständnis von hilfe (und auch das der meisten anderen hier) hinaus.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Lass uns bitte wieder FRIEDEN schliessen
                      Ich hab halt noch nicht viel Ahnung von PHP...

                      Das Buch von O´Reilly hat mir aber schon super bei Formularen geholfen, Variablen übergeben, Eingaben checken etc.

                      @Happiness:

                      Ich habe heute Morgen schon ca. 3 Stunden hier im Forum gesucht, aber ich bin nicht schlau daraus geworden.


                      Bei php-center habe ich aber ein Thumbnailscript gefunden, dass ich angepasst habe.

                      So sieht das komplette jetzt aus:

                      PHP-Code:
                      if ($_FILES["foto"]["size"] > 0)
                      {
                          
                      $foto true;
                          
                      preg_match("/(\.\w+)$/"$_FILES["foto"]["name"],$match);
                          
                      $typ $match[1];
                          
                          
                          
                          
                      // Nur bestimmte Endungen werden erlaubt
                          
                      if (in_array(strtolower($typ), array(".jpg")))
                          {    
                              
                      $dateiname $umsSystem->user_id.$typ;
                              
                      $bildpfad preg_replace("/\/[^\/]+$/","",$_SERVER["SCRIPT_FILENAME"])."/images/userpics/";
                              
                      copy($_FILES["foto"]["tmp_name"], $bildpfad.$dateiname);
                          
                              
                      // Resizen
                              
                      $size getimagesize("$bildpfad"."$dateiname"); 
                                
                      $breite $size[0]; 
                                
                      $hoehe $size[1]; 
                                
                      $neueBreite 100
                                
                      $neueHoehe intval($hoehe*$neueBreite/$breite);     
                              
                              
                      $altesBild=ImageCreateFromJPEG("$bildpfad"."$dateiname"); 
                                
                      $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
                                
                      ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
                              
                      $neueHoehe,$breite,$hoehe); 
                                
                      ImageJPEG($neuesBild,"$bildpfad"."TN"."$dateiname");
                          }


                      Das Bild wird jetzt rezised, aber leider mit dunklen Farben.

                      Wo liegt der Fehler?

                      Danke für Eure Hilfe....
                      Zuletzt geändert von Scott; 02.04.2003, 13:33.

                      Kommentar


                      • #12
                        Was nennst du bitte dunkle Farben?
                        http://www.freehost-script.com

                        Werden Sie Webhoster, mit Werbung auf den Userseiten, Php, Mysql, FTP

                        Kommentar


                        • #13
                          Fertig!

                          Jep, der Fehler lag bei ImageCreate, muss in ImageCreateTrueColor geändert werden.

                          Hier das vollständige Script für die Nachwelt

                          1. Eine Seite anlegen mit einem Formular für Datei hochladen und Submit Button. Als action z.B. upload.php

                          2. upload.php anlegen mit folgendem Inhalt:

                          PHP-Code:
                          <?php
                          if ($_FILES["foto"]["size"] > 0)
                          {
                              
                          $foto true;
                              
                          preg_match("/(\.\w+)$/"$_FILES["foto"]["name"],$match);
                              
                          $typ $match[1];
                              
                              
                              
                              
                          // Nur bestimmte Endungen werden erlaubt
                              
                          if (in_array(strtolower($typ), array(".jpg")))
                              {    
                                  
                          $dateiname $user_id.$typ//$user_id kann auch geändert werden, je nachdem, wie ihr die Datei bennen wollt.
                                  
                          $bildpfad preg_replace("/\/[^\/]+$/","",$_SERVER["SCRIPT_FILENAME"])."/images/userpics/";
                                  
                          copy($_FILES["foto"]["tmp_name"], $bildpfad.$dateiname);
                              
                                  
                          // Resizen
                                  
                          $size getimagesize("$bildpfad"."$dateiname"); 
                                    
                          $breite $size[0]; 
                                    
                          $hoehe $size[1]; 
                                    
                          $neueBreite 100
                                    
                          $neueHoehe intval($hoehe*$neueBreite/$breite);     
                                  
                                  
                          $altesBild=ImageCreateFromJPEG("$bildpfad"."$dateiname"); 
                                    
                          $neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe); 
                                    
                          ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
                                  
                          $neueHoehe,$breite,$hoehe); 
                                    
                          ImageJPEG($neuesBild,"$bildpfad"."$dateiname");
                              }

                          }
                          else
                          {
                              
                          $foto false;
                          }
                          ?>
                          und im HTML-Teil z.B.:

                          PHP-Code:
                                                  <?php
                                                      
                          if($foto)
                                                      {
                                                  
                          ?>
                                                  <img src="<?php echo "images/userpics/".$dateiname?>">
                                                  <?php
                                                      
                          }
                                                      else
                                                      {
                                                          echo 
                          "Fehler beim Upload!";
                                                      }
                                                  
                          ?>
                          Das Script oben überprüft auch, ob ein Foto überhaupt mitgeschickt wurde und gibt eine Fehlermeldung aus, wenn $foto = false ist.

                          Viel Spass damit!

                          Und nochmal Danke an Tobiaz, Happiness und Kleinbreuer

                          Kommentar


                          • #14
                            Ich hab da gedacht da kann ich was für mich entdecken:

                            PHP-Code:
                             $bildpfad preg_replace("//[^/]+$/","",$_SERVER["SCRIPT_FILENAME"])."/images/userpics/"
                            wenn ich das ausprobiere dann bekomme ich ein:

                            Warning: Unknown modifier '[' in C:\Uniserver2_2s\www\sotr\php\gallerie\upload.php on line 20


                            Hat da jemand eine idee?
                            Möglich ist alles!

                            Kommentar


                            • #15
                              das liegt daran, dass der [ php ] tag hier 'ne sau ist und backslashes verschluckt.

                              sieh dir das posting von scott in der textarea beim zitieren an, dann bekommst du den 'richtigen' code.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X