automatische Bildgrösse

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

  • automatische Bildgrösse

    Hy leute,
    ich habe folgendes problem.
    Die User können bei mir ein eigenes Benutzerbild uploaden (in verschiedenen Grössen!!!)

    Jetzt will ich aber, dass beim Anzeigen dieses Bildes ein Thumbnail gemacht wird. Die Höhe darf max. 100 pixel und die Breite max. 100 pixel sein.
    Wenn beide Grössen kleiner sind, kann ich ja das Originalbild verwenden.
    Bis jetzt habe ich es geschafft, das ich die Breite oder die Höhe auf 100 pixel reduzieren kann, aber nicht beides.

    Mein Script
    PHP-Code:
    <?php
    include"Bildverkleinerung.php";
    $thumb1 = new thumb();
    $thumb1->create("Bilder/$ausgabec[Bild]"10000);
    $thumb1->savetofile("Bilder/Thumbnails/$ausgabec[Bild]"60); // Bild speichern
    $thumb1->clear();
    ?>
    Bildverkleinerung.php
    PHP-Code:
    <?
    // Inhalt: Klasse zum Erstellen von Thumbnails
    // Autor:  Reitinger Matthias a.k.a. reima (plz give proper credit)

    class thumb
    {
        var $im = 0;

        function thumb($file=0, $width=0, $height=0)
        {
            if ($file && $width && $height) {
                $this->create($file, $width, $height);
            }
        }

        function create($file, $width=0, $height=0, $resample=0)
        {
            if ($this->im) $this->clear();

            list($src_width, $src_height, $src_type) = getimagesize($file);
            if ($src_type != 2) return false; // kein jpeg => abbrechen

            if ($width == 0) {
                $width = round($height * ($src_width/$src_height));
            }
            if ($height == 0) {
                $height = round($width * ($src_height/$src_width));
            }

            $src_im = imagecreatefromjpeg($file);
            $this->im = imagecreatetruecolor($width, $height);

            if ($resample) {
                imagecopyresampled($this->im, $src_im, 0, 0, 0, 0,
                    $width, $height, $src_width, $src_height);
            } else {
                imagecopyresized($this->im, $src_im, 0, 0, 0, 0,
                    $width, $height, $src_width, $src_height);
            }

            imagedestroy($src_im);

            return true;
        }

        function savetofile($file, $quality=100)
        {
            imagejpeg($this->im, $file, $quality);
        }

        function output($quality=100)
        {
            header("Content-type: image/jpeg");
            imagejpeg($this->im, "", $quality);
        }

        function clear()
        {
            imagedestroy($this->im);
            $this->im = 0;
        }
    }
    ?>

  • #2
    bei den code-schnipseln gibt es was, was thumnails erzeugt. also das was du quasi suchst....

    ... aber wenn man die suchfunktion des forums nicht nutzt, kann man auch nix finden....
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      auf den ersten blick denke ich mal, dass die die klasse, das bild verkleinert unter beibehaltung des verhältnisses

      (300 breit und 900 hoch wird zu 100 breit und 300 hoch)

      du müsstest dann das ganze nochmal aufrufen, für width 0 übergeben und für height 100

      (100 breit und 300 hoch wird zu 33 breit und 100 hoch)


      oder du übergibst einfach für widht und für height 100
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        ich mache es jetzt so, wie es mrhappiness geschrieben hat.

        jezt habe ich noch ein kleines Problem:
        ich lese die Bildgrösse aus ->
        $Bild = "Bilder/$ausgabec[Bild]";
        $image = GetImageSize($Bild);
        Dann gibt es mir z.b aus:
        Höhe: 300
        Breite: 200

        was muss ich in den code schreiben, damit es mir die grössere Zahl auf 100 pixel reduziert (Damit kann ich dann die kleinere (hier 200 pixel) mit dem Faktor reduzieren), sprich es mir aus einem array die grösste zahl ausliest... ?

        Kommentar


        • #5
          so in der art...
          PHP-Code:
          if($hoehe $breite)
          {
            
          // ....
          }
          else
          {
            
          // die breite ist größer

          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar

          Lädt...
          X