Ich habe einen Service auf einem Coldfusion 9-Server, der Image-Banner für uns erstellt. Ein separater Rechner muss diese Dateien mit etwas wie:
speichern %Vor%Das Problem ist, dass ich mir nicht vorstellen kann, wie ich Coldfusion bekomme, um Binärdaten auszugeben, ohne eine temporäre Datei zu verwenden. In der Minute wird das Bild nur als Bild-Tag wie folgt angezeigt:
%Vor%Irgendwelche Ideen? Oder sollte ich nur eine temporäre Datei verwenden?
Ich kann nicht testen, weil Sie keinen Beispielcode für die Art und Weise angeben, wie Ihre Bilder erzeugt werden, aber haben Sie etwas in dieser Zeile versucht?
%Vor%Update: Also habe ich mein eigenes Image erstellt; Ich nehme an, du tust etwas Ähnliches. Das funktioniert perfekt für mich:
%Vor%Dies funktioniert, ohne in eine Datei zu schreiben und ohne ein virtuelles Dateisystem ("ramdisk") zu verwenden
Wenn Sie die binären Bytes einer Datei / eines Bildes haben, können Sie den Ausgabepuffer mit seinem Inhalt wie folgt ersetzen:
%Vor% Ziemlich viel was <cfcontent>
macht, wenn Sie reset="true"
Der Vorteil dieser Methode gegenüber <cfcontent>
ist, dass wir sie in unsere cfscript-basierten cfcs schreiben können.
Ich habe die obige Lösung gefunden
%Vor%nicht ganz für mich arbeiten.
Einstellungstyp="image / png" stellt nur den Mime-Typ der Antwort ein. Ich glaube nicht, dass es das Bild notwendigerweise als PNG kodiert. Das Erzeugen eines transparenten png (Bildtyp "argb") hat mir also im Vergleich zur <cfimage action = "writeToBrowser"...>
Methode seltsame Farben gegeben.
Ich dachte, dass ich irgendwie die Bilddaten als PNG kodieren und die binären Daten direkt ausgeben müsste.
Nachdem ich im darunterliegenden Java herumgegrubbelt habe, kam ich auf dieses Problem, was bisher bei mir funktioniert.
In diesem Beispiel wird ein transparentes PNG mit einem schwarzen Kreis gezeichnet.
%Vor%Ich hoffe, das hilft jemandem!
Nehmen Sie die Attribute height und width heraus und fügen Sie das Attribut format hinzu:
%Vor% wget sollte die Umleitung auf die physische Datei berücksichtigen, die CF im CFFileServlet-Ordner erstellt, aber wenn dies nicht der Fall ist, können Sie ein Flag setzen, um --max-redirect=10
zu machen.
Und wie Sie vorschlagen, würde auch eine temporäre Datei funktionieren. Schreiben Sie einfach die Datei und verwenden Sie cfheader und cfcontent, um sie auszugeben. Stellen Sie nur sicher, dass der Name der temporären Datei eindeutiger ist.
%Vor%Ich mache eine ähnliche Sache, und Sie müssen Tags und cfscript kombinieren. Es gibt Bildfunktionen, die benötigt werden. Wenn Sie ein Bild als Variable gespeichert haben, stehen Ihnen viele Bildfunktionen zur Verfügung. Sie können das Bild mit CFFILE oder CFHTTP oder auf andere Arten in den Speicher holen.
In meinem Fall lese ich eine Bilddatei mit dem CFIMAGE-Tag in den Speicher und manipuliere sie dann mit den CFSCRIPT-Bildfunktionen, indem ich unten Text hinzufüge und dann das resultierende Bild als .png (oder als .jpg, falls gewünscht) ausgabe. zum Browser. Die einzige auf dem Server gespeicherte Datei ist die ursprüngliche Bilddatei. In Ihrem Fall würden Sie, anstatt ein Bild einzulesen, es mit einem cfhttp-Tag aufrufen, wie Sie es bereits tun. Hier ist mein Code:
%Vor%Sie können es in Aktion bei Ссылка
sehen(Ich verwende CF9 mit Windows Server)
Tags und Links coldfusion coldfusion-9