Ich habe einen Node.js-Server (irrelevant), der die Bildbearbeitung mit ImageMagick ausführt. Grundsätzlich kann ich ein Image auf den Server POSTEN und es wird mit dem transformierten Image antworten.
Im Moment schreibe ich nur das POSTed-Image in eine Datei und starte ImageMagick als untergeordneten Prozess. Dabei wird das transformierte Image in eine neue Datei geschrieben und diese neue Datei an den POSTer gesendet. Ich möchte es vermeiden, auf die Festplatte zu schreiben, um die Dinge zu beschleunigen. Kann dieser ImageMagick-Prozess Streaming-Eingaben akzeptieren und mir einen Stream als Ausgabe geben?
Dies ist beispielsweise einer der kompliziertesten Befehle, die ich derzeit verwende:
/usr/local/opt/imagemagick/bin/convert \( '/Users/shawn/Work/vigour-img/originals/7ajy06' -resize '150x150^' -gravity 'Center' -crop '150x150+0+0' \) \( '/Users/shawn/Work/vigour-img/images/avatarMask.png' -resize '150x150' -gravity 'Center' \) -compose 'CopyOpacity' -composite '/Users/shawn/Work/vigour-img/out/1bl6jm9.png'
Das hängt davon ab /Users/shawn/Work/vigour-img/originals/7ajy06
und /Users/shawn/Work/vigour-img/images/avatarMask.png
vorhanden auf Platte und schreibt das Ergebnis auf /Users/shawn/Work/vigour-img/out/1bl6jm9.png
.
Wenn ich stattdessen die Eingabedateien streamen und das Ergebnis als Stream erhalten könnte, müsste ich nicht auf die Festplatte schreiben, was die Leistung erheblich verbessert (glaube ich).
quelle
stream
Befehl im ImageMagick-Paket enthalten, das einige Aspekte dieses Prozesses unterstützen kann.stream
Befehl, den Sie erwähnen). Das Schreiben in eine Datei oder in eine http - Antwort sollte so ziemlich dasselbe sein ... wie für diestream
Befehl, es ist mir unklar, wie man es in meinem Fall verwendet. Ich werde mehr Zeit dafür aufwenden und Dinge ausprobieren müssen. Danke für den Tipp.Antworten:
Da ist es https://www.npmjs.com/package/imagemagick-stream das bietet Node.js Stream-Schnittstellen für imagemagick.
quelle