Grayscale image: Difference between revisions
Content added Content deleted
(→{{header|REXX}}: added a section to show how a "color" may be expressed in other forms in REXX.) |
|||
Line 213: | Line 213: | ||
=={{header|Clojure|Clojure}}== |
=={{header|Clojure|Clojure}}== |
||
<lang clojure> |
<lang clojure> |
||
⚫ | |||
⚫ | |||
'[javax.imageio ImageIO] |
|||
⚫ | |||
'[java.awt Color] |
|||
'[java.awt.image BufferedImage])) |
|||
[java.awt.image BufferedImage])) |
|||
⚫ | |||
(let [width (.getWidth color-image)] |
|||
(partition width |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
(defn rgb-to-gray [color-image] (map |
|||
(fn [y] ( |
|||
map |
|||
⚫ | |||
⚫ | |||
( |
|||
⚫ | |||
( |
|||
let [r (.getRed rgb-object) g (.getGreen rgb-object) b (.getBlue rgb-object) a (.getAlpha rgb-object)] |
|||
( |
|||
⚫ | |||
⚫ | |||
) |
|||
⚫ | |||
) |
|||
) |
|||
⚫ | |||
range |
|||
( |
|||
.getWidth color-image |
|||
) |
|||
) |
|||
) |
|||
) |
|||
( |
|||
range |
|||
( |
|||
⚫ | |||
⚫ | |||
) |
|||
) |
|||
) |
|||
(defn write-matrix-to-image [matrix filename] |
(defn write-matrix-to-image [matrix filename] |
||
(ImageIO/write |
|||
⚫ | |||
(let [height (count matrix) |
|||
( |
|||
width (count (first matrix)) |
|||
⚫ | |||
(spit "/dev/null" ( ;This is the only way I could find to force evaluation so that side-effects are applied. spit just writes to null file |
|||
⚫ | |||
map |
|||
column-index (range width)] |
|||
⚫ | |||
fn [row-index] ( |
|||
⚫ | |||
"png" |
|||
⚫ | |||
map (fn [column-index] |
|||
( |
|||
⚫ | |||
) |
|||
) |
|||
⚫ | |||
) |
|||
) |
|||
⚫ | |||
) |
|||
) |
|||
⚫ | |||
) |
|||
) |
|||
⚫ | |||
) |
|||
(println |
(println |
||
(write-matrix-to-image |
(write-matrix-to-image |
||
(rgb-to-gray |
(rgb-to-gray |
||
(ImageIO/read (new File "test.jpg")) |
(ImageIO/read (new File "test.jpg"))) |
||
⚫ | |||
) |
|||
⚫ | |||
) |
|||
</lang> |
</lang> |