2014-12-28 67 views
4

我想创建一个使用Quil生成jpg图像的命令行应用程序。我打算编写几个通用图像处理函数来混合和匹配(一些绘图形状和一些处理像素数组)。Clojure,Quil:创建/调试通用函数

我想要做的一个简单示例是创建一个绘制圆的函数,然后创建一个将抖动算法应用于像素数组的第二个函数。

(defn draw-circle [x y] ...) ;; e.g. internally uses Quil draw functions. 

(defn apply-dither [pixels] ...) ;; e.g. internally uses Quil color functions on the pixels array. 

(defn draw [] 
(draw-circle 100 100) 
(apply-dither (pixels)) 
...) 

(defsketch sketch 
:draw draw) 

什么让我有点悲伤是所有的Quil函数似乎只能在草图宏中运行。这意味着我自己的内部函数不能直接调用(必须从草图宏触发的draw函数中调用),从而使调试成为可能/不可能。

我该如何去创建和调试这样的泛型函数?我坚持有代表我的草图调用函数还是有另一种方式?

也有可能Quil不是我的项目的正确工具。我正在考虑直接使用java /处理类。

我的开发环境是Emacs + Cider。

感谢

回答

1

我已经创建了一系列的命令行的https://github.com/rogerallen/qeom

运行我开发&迭代在Emacs +苹果酒,只是重新编译draw功能看到的结果更新直播奎尔草图在草图窗口中。

我用了一个原子(defonce dump-image-count (atom 1))控制在平局功能将保存图像:

(defn draw [] 
    ... 
    (when (> @dump-image-count 0) 
     (save-frame "q007-dump-####.png") 
     (swap! dump-image-count dec))) 

希望这有助于。

+0

谢谢罗杰,会试试看。 – Daneel