-
Notifications
You must be signed in to change notification settings - Fork 0
/
sketch0021.clj
63 lines (53 loc) · 1.65 KB
/
sketch0021.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
(ns quil-sketches.sketch0021
(:use [quil.core]
[quil-sketches.core])
(:import (java.awt Image)
(java.awt.image PixelGrabber)
(java.io File)
(javax.imageio ImageIO)))
;; Trying something a little different with colour...
(defn setup []
(smooth)
(frame-rate 60)
(no-stroke)
(let [file (File. "clojure-logo10[1].png")
img (ImageIO/read file)
width (.getWidth img)
height (.getWidth img)
grabber (PixelGrabber. img 0 0 width height true)]
(.grabPixels grabber)
(def img-width width)
(def img-height height)
(def x-dia (/ img-width 100))
(def y-dia (/ img-height 100))
(def pixel-vec (vec (.getPixels grabber)))))
(defn color-vec-from-int [x]
[(red x) (green x) (blue x) (alpha x)])
(defn img-points []
(for [x (range 0 img-width)
y (range 0 img-height)]
[x y]))
(defn draw-ellipse [x y x-dia y-dia]
(ellipse x y x-dia y-dia))
(defn draw-rect [x-centre y-centre x-dia y-dia]
(let [x (- x-centre (int (/ x-dia 2)))
y (- y-centre (int (/ y-dia 2)))]
(rect x y x-dia y-dia)))
(defn draw-shape [x y x-dia y-dia]
; (draw-ellipse x y x-dia y-dia)
(draw-rect x y x-dia y-dia)
)
(defn make-point [[x y]]
(let [color-index (int (+ (* y img-height) x))
pixel-value (pixel-vec color-index)
color-vec (color-vec-from-int pixel-value)]
(apply fill color-vec)
(draw-shape x y x-dia y-dia)))
(defn draw []
(make-point [(int (random img-width)) (int (random img-height))]))
(start-sketch
{:name "Oh so many colourful ellipses"
:setup setup
:draw draw
:size [500 500]
:filename "sketch0021.png"})