Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Bildqualität Thumbnails

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Bildqualität Thumbnails
    Antwort #30 am: 28. Februar 2019, 21:56:55
    Mach doch mal'n Ticket dazu bitte.
    Ich mache schon so viele Tickets, nicht, daß ich nachher noch als Querulant gelte..., und seit ich auch noch "Reichsbürger" (insider joke) bin...  :paperbag:

    Gruß,
    noRiddle

    p3e

    • Experte
    • Beiträge: 2.396
    Re: Bildqualität Thumbnails
    Antwort #31 am: 28. Februar 2019, 22:28:30
    Erledigt. Ticket #1600

    manne35

    • Fördermitglied
    • Beiträge: 593
    • Geschlecht:
    Re: Bildqualität Thumbnails
    Antwort #32 am: 01. März 2019, 03:40:25
    Wie ist es denn bei Verwendung von ImageMagick?
    Ist da auch ein Nachschärfen notwendig, also hat das schon jemand verglichen, ausprobiert ?

    Schönen Gruß
    Manfred

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Re: Bildqualität Thumbnails
    Antwort #33 am: 01. März 2019, 08:30:10

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Re: Bildqualität Thumbnails
    Antwort #34 am: 11. August 2020, 21:45:26
    Moin

    In Shopversion 2.0.5.1 ist in /admin/includes/classes/image_manipulator_GD2_advanced.php am Ende folgender Code hinzugekommen für das Schärfen

    Code: PHP  [Auswählen]
    function sharpen() {
          $sharpen = false;
         
          /*
           * example
           *
          $sharpen_arr = array(
            array(-1.2, -1, -1.2),
            array(-1.0, 20, -1.0),
            array(-1.2, -1, -1.2)
          );

          // calculate the sharpen divisor
          $divisor = array_sum(array_map('array_sum', $sharpen_arr));
         
          $offest = 0;
          */

         
          require_once(DIR_FS_INC.'auto_include.inc.php');
          foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/image_sharpen/','php') as $file) require ($file);

         
          if ($sharpen === true && is_array($sharpen_arr) && count($sharpen_arr) == 3) {
         
            // sharpen the image
            imageconvolution($this->t, $sharpen_arr, $divisor, $offset);
          }
        }

    Wie wird das in 2.0.5.1 richtig angewendet, damit es funktioniert wie die Lösung von @hpzeller aus Beitrag #14?

    In Ticket #1600 wurde von @Tomcraft als Beispiel gegeben eine Datei /admin/includes/extra/modules/image_sharpen/10_image_sharpen.php mit folgendem Inhalt zu erstellen.

    Code: PHP  [Auswählen]
    <?php
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      $offset = 0;
      //$divisor = 10;
     
      if ($this->q > 1) $sharpen = true;
    ?>

    1) Wird mit dieser auto inkludierten Datei durch

    Code: PHP  [Auswählen]
     if ($this->q > 1) $sharpen = true;

    das

    Code: PHP  [Auswählen]
    $sharpen = false;

    in /admin/includes/classes/image_manipulator_GD2_advanced.php überschrieben und muss nicht manuell geändert werden und wird somit auch der Teil

    Code: PHP  [Auswählen]
    // sharpen the image
            imageconvolution($this->t, $sharpen_arr, $divisor, $offset);

    ausgeführt, der in der Lösung aus diesem Beitrag enthalten ist, aber nicht in der autoinkludierten Datei?

    2) Das Bsp von @Tomcraft bezieht sich scheinbar auf alle Bildergrößen. Wenn man es weiterhin nur für Bilder mit weniger als 400px Breite machen möchte, wie es hier im Thread beschrieben wurde, würde der Code der autoinkludierten Datei wie folgt richtig sein?

    Code: PHP  [Auswählen]
    <?php
    if ($d_w <400) {
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      $offset = 0;
      //$divisor = 10;
     
      if ($this->q > 1) $sharpen = true;
    }
    ?>

    3) Ich nehme an, dass

    Code: PHP  [Auswählen]
    $divisor = array_sum(array_map('array_sum', $sharpenMatrix));

    irgendwie 10 ergibt. vermutlich 9 mal Inhalt der Matrix plus 1 mal Matrix. Warum wurde das aber auskommentiert im Ticket

    Code: PHP  [Auswählen]
     //$divisor = 10;

    und sollte es nicht einkommentiert werden?

    Gruss Timm

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.185
    • Geschlecht:
    Re: Bildqualität Thumbnails
    Antwort #35 am: 12. August 2020, 16:47:18
    [...]
    In Shopversion 2.0.5.1 ist in /admin/includes/classes/image_manipulator_GD2_advanced.php am Ende folgender Code hinzugekommen für das Schärfen

    Code: PHP  [Auswählen]
    function sharpen() {
          $sharpen = false;
         
          /*
           * example
           *
          $sharpen_arr = array(
            array(-1.2, -1, -1.2),
            array(-1.0, 20, -1.0),
            array(-1.2, -1, -1.2)
          );

          // calculate the sharpen divisor
          $divisor = array_sum(array_map('array_sum', $sharpen_arr));
         
          $offest = 0;
          */

         
          require_once(DIR_FS_INC.'auto_include.inc.php');
          foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/image_sharpen/','php') as $file) require ($file);

         
          if ($sharpen === true && is_array($sharpen_arr) && count($sharpen_arr) == 3) {
         
            // sharpen the image
            imageconvolution($this->t, $sharpen_arr, $divisor, $offset);
          }
        }

    Wie wird das in 2.0.5.1 richtig angewendet, damit es funktioniert wie die Lösung von @hpzeller aus Beitrag #14?
    [...]

    Na genau so wie von dir hier bereits festgestellt:

    [...]
    In Ticket #1600 wurde von @Tomcraft als Beispiel gegeben eine Datei /admin/includes/extra/modules/image_sharpen/10_image_sharpen.php mit folgendem Inhalt zu erstellen.

    Code: PHP  [Auswählen]
    <?php
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      $offset = 0;
      //$divisor = 10;
     
      if ($this->q > 1) $sharpen = true;
    ?>
    [...]

    Einfach die Datei erstellen, dann werden alle Bilder mit einer Breite größer als 1 Pixel geschärft.

    [...]
    1) Wird mit dieser auto inkludierten Datei durch

    Code: PHP  [Auswählen]
     if ($this->q > 1) $sharpen = true;

    das

    Code: PHP  [Auswählen]
    $sharpen = false;

    in /admin/includes/classes/image_manipulator_GD2_advanced.php überschrieben und muss nicht manuell geändert werden und wird somit auch der Teil

    Code: PHP  [Auswählen]
    // sharpen the image
            imageconvolution($this->t, $sharpen_arr, $divisor, $offset);

    ausgeführt, der in der Lösung aus diesem Beitrag enthalten ist, aber nicht in der autoinkludierten Datei?
    [...]

    Korrekt.

    [...]
    2) Das Bsp von @Tomcraft bezieht sich scheinbar auf alle Bildergrößen. Wenn man es weiterhin nur für Bilder mit weniger als 400px Breite machen möchte, wie es hier im Thread beschrieben wurde, würde der Code der autoinkludierten Datei wie folgt richtig sein?

    Code: PHP  [Auswählen]
    <?php
    if ($d_w <400) {
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      $offset = 0;
      //$divisor = 10;
     
      if ($this->q > 1) $sharpen = true;
    }
    ?>
    [...]

    Nein, der korrekte Code lautet dann:

    Code: PHP  [Auswählen]
    <?php
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      $offset = 0;
      //$divisor = 10;
     
      if ($this->q < 400) $sharpen = true;
    ?>

    [...]
    3) Ich nehme an, dass

    Code: PHP  [Auswählen]
    $divisor = array_sum(array_map('array_sum', $sharpenMatrix));

    irgendwie 10 ergibt. vermutlich 9 mal Inhalt der Matrix plus 1 mal Matrix. Warum wurde das aber auskommentiert im Ticket

    Code: PHP  [Auswählen]
     //$divisor = 10;

    und sollte es nicht einkommentiert werden?
    [...]

    Such doch selber mal mit Google nach "sharpen matrix". Manchmal ist ein Divisor mit angegeben und manchmal eben nicht.

    Grüße

    Torsten

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Re: Bildqualität Thumbnails
    Antwort #36 am: 13. August 2020, 08:49:29
    Hallo Torsten

    Danke für deine Hilfe.

    Das mit dem Divisor ist ja echt höhere Mathematik. Das verwirrende ist, dass du ein Beispiel genommen und verlinkt hast, darin aber den vorgegebenen Divisor umgeändert hast auf eine feste Zahl und diese auskommentiert hast. Hat das einen Grund warum du es geändert hast?

    Ergibt: array_sum(array_map('array_sum', $sharpen_arr)); = 10 ?

    Wäre es so korrekt, wenn man genau dem Bsp aus dem Link folgt und wie es vorher hier im Thread angegeben wurde?

    Code: PHP  [Auswählen]
    <?php
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      $offset = 0;
      $divisor = array_sum(array_map('array_sum', $sharpen_arr));
     
      if ($this->q < 400) $sharpen = true;
    ?>

    Und hat es Auswirkungen auf die Performance, dass offset und divisor vertauscht wurden in der auto-inkludierten Datei? Ich würde laienhaft annehmen, dass es schneller wäre (sofern der Divisor nicht auskommentiert ist), wenn es in der Reihenfolge ist, wie in

    Code: PHP  [Auswählen]
    // sharpen the image
            imageconvolution($this->t, $sharpen_arr, $divisor, $offset);

    also so

    Code: PHP  [Auswählen]
    <?php
      $sharpen_arr = array(
        // Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
        array(-1.2, -1, -1.2),
        array(-1.0, 20, -1.0),
        array(-1.2, -1, -1.2)
      );
     
      // calculate the sharpen divisor
      $divisor = array_sum(array_map('array_sum', $sharpen_arr));
     
      $offset = 0;
     
      if ($this->q < 400) $sharpen = true;
    ?>

    Gruss Timm
    Shop Hosting
    10 Antworten
    7596 Aufrufe
    16. Mai 2011, 16:30:26 von RossiRat
    1 Antworten
    2428 Aufrufe
    18. Februar 2010, 22:41:46 von guensi
    12 Antworten
    8000 Aufrufe
    20. Januar 2012, 10:14:44 von Tomcraft
    5 Antworten
    3671 Aufrufe
    20. Februar 2012, 22:49:57 von Soeldner
               
    anything