【发布时间】:2016-06-04 10:16:24
【问题描述】:
我正在寻找一种方法让响铃服务器根据请求从 URL 中获取图像,对其进行处理并提供修改后的版本。
这就是我到目前为止的方式:
(require '[clj-http.client :as client]
'[ring.adapter.jetty :refer [run-jetty])
(import javax.imageio.ImageIO)
(def handler (-> (client/get "http://.../some-img.jpg" {:as :stream})
:body
ImageIO/read
.. ;; do some processing with the BufferedImage here
.. ;; and serve the modified version))
(run-jetty handler {:port 55555})
尤其是我在执行线程宏中的最后一步时遇到了麻烦。
【问题讨论】:
-
是否可以通过添加一些中间件来解决这个问题,该中间件找到一个函数作为响应的 :body 部分,并尝试调用该函数并将其传递给 OutputStream(即写入图像的流)?我对 Ring 的经验很少(较少使用中间件),但我使用内部 BufferedImage 池库和(也是内部的)Ring-inspired web-tier 做了类似的事情 - 只是它全部使用 Java。在我的情况下,它通常是相同的图像,它被复制到池图像,“绘制”,然后流式传输到客户端,从未作为文件存在。
标签: clojure bufferedimage ring