[Gelöst/Skript] Autom. rekursives Skalieren von Bildern

  • Hi,


    da meine geplagte Dreambox einen Bildbetrachter hat, der mit hochauflösenden Bildern sehr langsam ist, musste ich dringend Abhilfe in Form einer automatischen Bildskalierung schaffen. Bedingung war eine Lösung die Nachts auch per cron angestossen werden kann, denn das Skalieren dauert beim ersten Mal sehr lange und soll dann auch die neuen Bilder automatisch skalieren.


    Es ist wirklich kein besonders ausgefeiltes Skript, aber vielleicht kann ja doch jemand etwas damit anfangen.
    Ich habe schon so oft aus diesem Forum Hilfe erhalten und möchte nun wenigstens einen bescheidenen Beitrag leisten.


    Hier also die Lösung mit folgenden Eigenschaften:


    - die Dateien aus den Quellverzeichnis werden rekursiv verarbeitet
    - die Originaldateien werden nicht verändert, sondern es werden skalierte Versionen im Zielverzeichnis erstellt
    - die gesamte Verzeichnisstruktur bleibt im Zielverzeichnis erhalten
    - es werden nur Dateien mit Endung JPG skaliert (Schreibweise egal)
    - Skalierung auf max. 1024 Pixel
    - es werden nur die Bilder skaliert, die im Zielverzeichnis noch nicht existieren


    1. QPKG Optware installieren


    2. IPKG Pakete installieren
    perl - Skript ist in perl geschrieben
    coreutils - ist wichtig für den nohup Befehl, um einen Prozess von der Konsole abzukoppeln
    imagemagick - convert Funktion zum Skalieren der Bilder


    3. Via SSH das Skript auf dem NAS ablegen und auf die eigene Verzeichnisstruktur anpassen.
    (Dabei bitte auf die genaue Schreibweise der Verzeicnisse achten)


    In dem Perl-Skript werden das Quell- und Zielverzeichnis in den Variablen $mySrcDir und $myDestDir angegeben.
    Zugegeben nicht sehr komfortabel, aber es funktioniert.


    Starten kann man das dann mit dem nohup Befehl:

    Code
    nohup /absolute/path/to/perl-script/dirconv.pl > /path/to/logfile/dirconf.log 2>&1 &


    Kritik, Anregungen und sonstige Meinungen sind willkommen


    Grüße


    Hans

  • Hi Hans,


    warum dann so komplex?
    Das ganze könnte man doch auch mit den bereits vorhandenen Paketen auf den NAS machen.
    - PHP & GD
    - IMR_ALL könnte man dazu auch "missbrauchen" (http://forum.qnapclub.de/viewtopic.php?f=41&t=546)
    - Crontab oder ICONV könnte man auch mit einbeziehen. Das würde den Aufruf ersparen.


    Das ganze wäre dann wesentlich nicht so komplex wie Dein Perl Script und Pakete müsste man sich auch nicht nach installieren.

  • Hi Terz,


    hmmmm ... PHP war klar, aber an GD habe ich nicht gedacht. Auch ein Ansatz.
    Klar man kann PHP auch ohne die Web-Server-Umgebung verwenden. Irgendwie bin ich bei
    PHP immer reflexartig im Web-Server-Bereich.
    Danke für die Anregung.


    Spannend wäre noch ein eleganter Weg, um ein eigenes PHP-Skript in die Administratoroberfläche zu integrieren.
    Kennst Du da eine "gute" Methode? Dann könnte man sich SSH sparen und aus dem Standard-Portal heraus agieren.
    Nett, muss aber nicht unbedingt sein.


    Gruß


    Hans

  • Hi Hans,


    das AdminCP würde ich nicht customizen, da diese Einstellungen nach einem FW Update wahrscheinlich eh wieder weg sind. ;)
    SSH ist ja auch direkt bei einem NAS mit on Board... Ohne was zu customizen.


    Einen Cronjob würde ich nicht machen, sonst wundern sich einige User darüber, das das NAS gelegentlich aus dem Standby "geweckt" wird.
    Die einzigst ware Lösung wäre inotify. Iss ja auch dafür gedacht (Ordnerüberwachung).
    Das lässt sich gerne via deinem Perl Script machen, oder man nutzt PHP mit GD, oder eben IMR_ALL. ;)


    Ich würde mich in diesem Falle für IMR_ALL entscheiden, da es ja bereits genau das macht, was Du machen möchtest. Das verknüpft mit inotify wäre es dann auch schon. ;)
    Wenn Du dann ein Bild auf den NAS in einem Pfad ablegst, der überwacht wird, werden automatisch Thumbnails erstellt. Das NAS wäre um 1 Shell Script reicher, ohne irgendwelche benötigten Pakete, und ohne das Scipt anschubsen. ;)
    Das würde dann auch der Überschrift entsprechen. ;) (Automatisch) ;) Wäre doch auch eine Prima Anleitung. :thumb:


    Schaue es Dir ruhig mal so an, und spiele etwas damit. ;) Wenn Du Hilfe brauchst "schreie" laut durch das Forum. ;)


    Grüsse, David.


    P.S.. Sorry, musste mich für diesen Post beeilen, da ich gleich noch wesch muss... Die Rechtschreibfehler darf jeder Behalten. ;)

  • Hallo David,


    danke für Deine ausführliche Antwort. Da sind einige gute Punkte drin. Besonders macht mich inotify an ;)
    Wie Du schon gesagt hast; ich werde mal noch etwas damit herumspielen. ... Spielen bildet ungemein :thumb:


    Gruß


    Hans