mixmastertobsi: PHP imageick Bild-Inforation hinzufügen

Hallo,

ich habe ein kleines Skript geschrieben, welches mit Imageick Bilder verkleinert. Nun möchte ich, dass das verkleinerte Bild aktualisiert wird, sobald das große Bild geändert wurde. Meine Idee war nun, dass ich die Dateigröße der Originaldatei im kleinen Bild speicher und wenn sich die Dateigröße des großen Bild ändert, das kleine Bild aktualisiert wird.

Welche Möglichkeit gibt es solche Informationen im kleinen Bild zu speichern. Gibt es hier irgendwelche Meta-Informationen etc. die man ändern/setzen kann.

  1. Hallo

    ich habe ein kleines Skript geschrieben, welches mit Imageick Bilder verkleinert. Nun möchte ich, dass das verkleinerte Bild aktualisiert wird, sobald das große Bild geändert wurde. Meine Idee war nun, dass ich die Dateigröße der Originaldatei im kleinen Bild speicher und wenn sich die Dateigröße des großen Bild ändert, das kleine Bild aktualisiert wird.

    Wie soll die Aktualisierung des großen Bildes ausgelöst werden? Wie soll, wenn eine solche erfolgt ist, das kleine Bild „wissen“, dass es sich nun auch zu aktualisieren hat?

    Welche Möglichkeit gibt es solche Informationen im kleinen Bild zu speichern. Gibt es hier irgendwelche Meta-Informationen etc. die man ändern/setzen kann.

    Wozu sollen diese gut sein?

    Tschö, Auge

    --
    Eine Kerze stand [auf dem Abort] bereit, und der Almanach des vergangenen Jahres hing an einer Schnur. Die Herausgeber kannten ihre Leser und druckten den Almanach auf weiches, dünnes Papier.
    Kleine freie Männer von Terry Pratchett
    1. Das muss dann über einen Crone-Job erfolgen, indem ein Skript alle Bilder öffnet und dann vergleicht. Nur wie bekomme ich diese Information in das Bild...

      1. Hallo

        Das muss dann über einen Crone-Job erfolgen, indem ein Skript alle Bilder öffnet und dann vergleicht. Nur wie bekomme ich diese Information in das Bild...

        Wenn es denn im Bild selbst sein muss, bietet sich EXIF an. Da der Schlüssen „Datum/Uhrzeit“ für den Aufnahmezeitpunkt reserviert ist, könnte man das in der Beschreibung unterbringen. Ansonsten ließen sich diese Infos auch in einer externen Datei oder in einer Datenbank unterbringen.

        Wie wird das große Bild überhaupt geändert? Per Upload oder mit einem PHP-Skript?

        Tschö, Auge

        --
        Eine Kerze stand [auf dem Abort] bereit, und der Almanach des vergangenen Jahres hing an einer Schnur. Die Herausgeber kannten ihre Leser und druckten den Almanach auf weiches, dünnes Papier.
        Kleine freie Männer von Terry Pratchett
      2. @@mixmastertobsi

        Das muss dann über einen Crone-Job erfolgen, indem ein Skript alle Bilder öffnet und dann vergleicht. Nur wie bekomme ich diese Information in das Bild...

        Wieso ins Bild? Und nicht ans Bild? Da ist die Information nämlich schon.

        Das Dateisystem kennt den Zeitpunkt der letzten Änderung von großem und zugehörigem kleinen Bild. Die musst du nur vergleichen und wenn das große Bild neuer ist, dann das verkleinerte Bild neu generieren.

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. Moin,

    ich habe ein kleines Skript geschrieben, welches mit Imageick Bilder verkleinert. Nun möchte ich, dass das verkleinerte Bild aktualisiert wird, sobald das große Bild geändert wurde.

    Wenn das Ausgangsbild verändert worden ist, hat es einen anderen Zeitstempel der letzten Modifikation. Daher kann dein Problem mit Make gelöst werden, d.h. in deinem Makefile stünde dann

    J=.jpg
    
    %-klein$J: %-gross$J
        verkleinern $< $@
    

    Die Variable $< löst dabei zur Eingabedatei auf, $@ zur Zieldatei. Das % ist die Wildcard. Die Regel ist erfüllt, sobald %-gross.jpg neuer als %-klein.jpg ist. Der Aufruf wäre dann z.B.:

    make Bild1-klein.jpg
    

    Wenn du automatisch alle kleinen Bildern aktualisieren möchtest, kannst du entweder make für alle ausführen lassen,

    make *-klein.jpg
    

    wobei die Shell die Wildcard * expandiert oder du definierst eine Regel im Makefile:

    all: Bild1-klein$J Daumennagel-klein$J Urlaub_im_Forum$J …
    

    und rufst dann einfach auf

    make
    

    Viele Grüße
    Robert