[Funktion] image Blur / Unschärfefilter für Bilder

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

  • [Funktion] image Blur / Unschärfefilter für Bilder

    Hallo,

    Ich habe folgendes Problem: Ich suche eine Funktion mit der ich Bilder mit einem Weichzeichnungsfilter versehen kann. Dabei will ich nicht auf die PHP5-Variante mit dem Befehl 'imagefilter()' zurückgreifen sondern suche eine Funktion, mit der ein Blureffekt auf bei PHP4 möglich ist.

    Meine Überlegung war das Bild per imagecopyresampled() zu verkleinern und dann das verkleinerte Bild wieder zu vergrößern.
    Leider ist das Resultat sehr pixelig.

    Hat jemand vielleicht schon eine Lösung zu diesem Problem?

    Vielen Dank im Vorraus für Eure Mühe!!

    Viele Grüße
    Sebi

  • #2
    Mit 4.x-Bordmitteln geht das nicht... Falls externe Tools wie ImageMagick nicht in Frage kommen, hilft vielleicht das hier weiter:

    http://phpthumb.sourceforge.net/index.php

    Kommentar


    • #3
      Jo danke, die Funktionen sind ein Traum!

      Kommentar


      • #4
        PHP-Code:
        function blur (&$image) {
            
        $imagex imagesx($image);
            
        $imagey imagesy($image);
            
        $dist 1;

            for (
        $x 0$x $imagex; ++$x) {
                for (
        $y 0$y $imagey; ++$y) {
                    
        $newr 0;
                    
        $newg 0;
                    
        $newb 0;

                    
        $colours = array();
                    
        $thiscol imagecolorat($image$x$y);

                    for (
        $k $x $dist$k <= $x $dist; ++$k) {
                        for (
        $l $y $dist$l <= $y $dist; ++$l) {
                            if (
        $k 0) { $colours[] = $thiscol; continue; }
                            if (
        $k >= $imagex) { $colours[] = $thiscol; continue; }
                            if (
        $l 0) { $colours[] = $thiscol; continue; }
                            if (
        $l >= $imagey) { $colours[] = $thiscol; continue; }
                            
        $colours[] = imagecolorat($image$k$l);
                        }
                    }

                    foreach(
        $colours as $colour) {
                        
        $newr += ($colour >> 16) & 0xFF;
                        
        $newg += ($colour >> 8) & 0xFF;
                        
        $newb += $colour 0xFF;
                    }

                    
        $numelements count($colours);
                    
        $newr /= $numelements;
                    
        $newg /= $numelements;
                    
        $newb /= $numelements;

                    
        $newcol imagecolorallocate($image$newr$newg$newb);
                    
        imagesetpixel($image$x$y$newcol);
                }
            }

        nein, nicht von mir. aber funktioniert
        achja, bevor einer fragt:

        alles was das grafikerherz begehrt

        Kommentar

        Lädt...
        X