Ankündigung

Einklappen
Keine Ankündigung bisher.

PDF mit Imagemagick in Bilder umwandeln

Einklappen

Neue Werbung 2019

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

  • PDF mit Imagemagick in Bilder umwandeln

    Hi,

    ich bastel gerade an einer Routine, die eine 300 DPI PDF Datei von ca. 4 MB in eine 100 DPI Bilddatei umwandeln soll. Das ganze funktioniert auch soweit. Nur haben beide Methoden auch Ihre Nachteile:

    Beim ersten script

    Code:
    exec('convert -units PixelsPerInch -density 100x100 -colorspace rgb -define PNG:compression-level=9 -define PNG:compression-strategy=0 -define PNG:compression-filter=0 "../'.$nr.'.pdf" "../'.$nr.'.png"');
    werden die erzeugten Bilder insgesamt ca. 10 MB groß. Gibt es evtl. eine Möglichkeit, diese noch weiter zu komprimieren?

    Beim zweiten script

    Code:
    exec('convert -units PixelsPerInch -density 100x100 -quality 95 -colorspace CMYK "../'.$nr.'.pdf" "../'.$nr.'.jpg"');
    werden die erzeugten Bilder gut komprimiert (insgesamt ca. 4 MB).Jedoch werden diese in einem blaustichigen Farbton angezeigt. Ersetze ich im script "CMYK" durch "RGB", werden zwar die Farben korrekt angezeigt. Die Schrift in den erzeugten Bildern erscheint dann jedoch ausgefranzt und dicklich.

    Könnt Ihr mir helfen? Danke im voraus






  • #2
    Versuch mal -density 300. Meiner Erfahrung spielt auch die IM Version eine große Rolle.

    Kommentar


    • #3
      Danke für den Tip. Seltsamerweise werden nun jedoch keine Bilder mehr ausgegeben. Wenn ich hingegen den Wert "200" angebe, schon. Übrigens habe ich jetzt eine höhere Kompression bei PNG Objekten erreichen können, indem ich den Befehl:

      Code:
      exec('convert -units PixelsPerInch -density 100x100 -colorspace rgb -define PNG:compression-level=9 -define PNG:compression-strategy=1 -define PNG:compression-filter=2 "../'.$nr.'.pdf" "../'.$nr.'.png"');
      verwende. Mich würde es interessieren, ob evtl. eine noch höhere Kompression bei einigermaßen guter Bildqualität möglich ist.

      Kommentar


      • #4
        MOD: Verschoben von PHP-Einsteiger
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von de_Joerg Beitrag anzeigen
          Danke für den Tip. Seltsamerweise werden nun jedoch keine Bilder mehr ausgegeben. Wenn ich hingegen den Wert "200" angebe, schon. Übrigens habe ich jetzt eine höhere Kompression bei PNG Objekten erreichen können, indem ich den Befehl:

          Code:
          exec('convert -units PixelsPerInch -density 100x100 -colorspace rgb -define PNG:compression-level=9 -define PNG:compression-strategy=1 -define PNG:compression-filter=2 "../'.$nr.'.pdf" "../'.$nr.'.png"');
          verwende. Mich würde es interessieren, ob evtl. eine noch höhere Kompression bei einigermaßen guter Bildqualität möglich ist.
          PNG ist generell nicht geeignet für hohe Kompression.

          Also in meiner Anwendung habe ich folgenden Befehl:
          PHP-Code:
          exec('convert -density 300 ' $input '[0]' ' -flatten -resize ' $width 'x' $height ' jpg:' $output); 
          Und das funktioniert einwandfrei.

          Du könntest natürlich auch zuerst das PDF in ein hochqualitatives PNG umwandeln und im zweiten Schritt dieses PNG in ein komprimiertes JPG umwandeln. Vielleicht klappt ja das.

          Code:
          convert ... input.pdf output.png
          convert ... output.png output.jpg
          rm output.png

          Kommentar


          • #6
            Könnte man doch gleich als jpg ausgeben, sollte das gleiche Ergebnis bringen.

            Kommentar


            • #7
              Danke für Eure Antworten. Leider zeigten sich bei meinem Vorhaben einige zuerst einige Schwierigkeiten:

              1. Ins JPG umgewandelte PDf Seiten zeigten bei Firefox und Chrome unnatürliche Falschfarben und einen schwarzen Hintergrund. Durch einsetzen des "-alpha remove" Befehls, wurde das Problem behoben.
              2. Bei sehr umfangreichen PDF Dateien, erfolgte eine fehlerhafte umwandlung. Extrahiert man jede Seite einzeln, wird das Problem behoben.

              Daraus ergab sich der folgende Script, der eine 300 DPI PDF Datei in ein 120 DPI Format umwandelt:

              PHP-Code:
              <?php
              $c
              =0;
              $d=$seiten;
              while (
              $c<$d)
              {
              exec('convert -units PixelsPerInch -density 300x300 -quality 98 -colorspace RGB -alpha remove  -resize 40% -sharpen 0x0.8 "'.$neu.'.pdf['.$c.']" "'.$neu.'-'.$c.'.jpg"');
              $c++;
              }
              ?>

              Kommentar

              Lädt...
              X