Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Bild scharfzeichnen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Bild scharfzeichnen

    Moin zusammen,

    ich möchte ein jpg, welches in mit PHP geöffnet und bearbeitet habe, scharfzeichnen. Die Funktion imageFilter() habe ich bereits gefunden, die bietet aber offensichtlich nur Funktionen zum Weichzeichnen.

    Gibt es eine Möglichkeit, mit PHP und der GD-Bibliothek auch ein Bild scharfzuzeichnen (noch besser wäre "unscharf maskieren")?

    Gruß, André


  • #2
    Hoi,

    ich weiss zwar nicht obs funktioniert, aber theoretisch müsste man doch imagefilter($image,IMG_FILTER_SMOOTH,-100); machen können oder?

    Gruß
    Cy

    Kommentar


    • #3
      -100 ist vielleicht ein bisschen viel. Kleine Änderungen können große Wirkung haben bei den Matrixfunktionen.

      PHP-Code:
      <?php
      if (!isset($_GET['x']))
      {
          for(
      $i=-10$i<11$i++)
          {
              if (
      $i%5==0)
              {
                  echo 
      '<br />';
              }
              echo 
      '<image src="?x=' $i '" />';
          }
          exit;
      }

      $im imagecreatefromjpeg('http://tbn0.google.com/images?q=tbn:--IQZoA0t4jdOM:http://www.dynamicdrive.com/dynamicindex4/lightbox2/flower.jpg');
      $black imagecolorresolve($im000);
      if (
      $_GET['x']!=='0')
      {
          
      imagefilter($imIMG_FILTER_SMOOTH$_GET['x']);
      }
      imagestring($im11020$_GET['x'], $black);
      if (!
      headers_sent())
      {
        
      header("content-type: image/png");
        
      imagepng($im);
      }
      ?>

      Kommentar


      • #4
        Auch wenn es hier keine unmittelbare Gefahr darstllt: ich würde die $_GET-Variablen nicht ungeprüft an die GD-Funktionen übergeben.
        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar


        • #5
          Also wenn ich dein Script copy-paste dann scheint es wohl zu funktionieren, nur bei -8 nicht??

          Kommentar


          • #6
            Zitat von Manko10 Beitrag anzeigen
            Auch wenn es hier keine unmittelbare Gefahr darstllt: ich würde die $_GET-Variablen nicht ungeprüft an die GD-Funktionen übergeben.
            Also für ein "guck es Dir einfach selbst an" Beispiel mache ich mir sicher da keinen Kopf.
            Aber wenn es Dich glücklich macht:
            PHP-Code:
            <?php
            $dia 
            10;
            if (!isset(
            $_GET['x']))
            {
              for(
            $i=-$dia$i<=$dia$i++)
              {
                if (
            $i%5==0)
                {
                  echo 
            '<br />';
                }
                echo 
            '<image src="?x=' $i '" />';
              }
              exit;
            }

            $im imagecreatefromjpeg('http://tbn0.google.com/images?q=tbn:--IQZoA0t4jdOM:http://www.dynamicdrive.com/dynamicindex4/lightbox2/flower.jpg');
            $black imagecolorresolve($im000);
            $x = ((int)$_GET['x']) % ($dia+1);
            if (
            $x!==0)
            {
              
            imagefilter($imIMG_FILTER_SMOOTH$x);
            }
            imagestring($im11020$x$black);
            if (!
            headers_sent())
            {
              
            header("content-type: image/png");
              
            imagepng($im);
            }
            ?>
            Zitat von cycap
            Also wenn ich dein Script copy-paste dann scheint es wohl zu funktionieren, nur bei -8 nicht??
            Doch, doch. Das funktioniert schon. Nur nicht so, wie Du es erwartest

            Kommentar


            • #7
              Zitat von David Beitrag anzeigen
              Doch, doch. Das funktioniert schon. Nur nicht so, wie Du es erwartest
              Also das Ergebnis ist alles andere als das was ich erwartet hätte, das stimmt schon...

              Kommentar


              • #8
                Das liegt daran, dass imagefilter/smooth "nur" eine andere Funktion verwendet.
                Zitat von gd.c
                Code:
                int gdImageSmooth(gdImagePtr im, float weight)
                {
                	float filter[3][3] =	{{1.0,1.0,1.0},
                				{1.0,0.0,1.0},
                				{1.0,1.0,1.0}};
                
                	filter[1][1] = weight;
                
                	return gdImageConvolution(im, filter, weight+8, 0);
                }
                http://en.php.net/imageconvolution
                Und was das macht, wird ganz gut bei 6.2. Convolution Matrix beschrieben.

                Kommentar


                • #9
                  Vielen Dank für die Erklärung, aber so genau wollt ich es nun auch nicht wissen

                  Kommentar


                  • #10
                    Moin,

                    Zitat von cycap Beitrag anzeigen
                    Hoi,

                    ich weiss zwar nicht obs funktioniert, aber theoretisch müsste man doch imagefilter($image,IMG_FILTER_SMOOTH,-100); machen können oder?

                    Gruß
                    Cy
                    Danke für den Tip. Genau so funktioniert es, wobei -100 nicht wirklich ein vernünftiger Wert ist.
                    Ich habe mal die Faktoren von -1 bis -100 durchprobiert, die Ergebnisse sind sehr unterschiedlich. Mit Faktoren im 10er-Bereich erzielt man am ehesten eine Scharfzeichnung, wobei -10 zu sehr und -19 zu wenig scharfgezeichnet ist. Die besten Ergebnisse gibts bei Werten um -15.

                    Gruß, André

                    Kommentar

                    Lädt...
                    X