Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Grayscale-image/Clojure/grayscale-image.clj
Normal file
37
Task/Grayscale-image/Clojure/grayscale-image.clj
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
(import '[java.io File]
|
||||
'[javax.imageio ImageIO]
|
||||
'[java.awt Color]
|
||||
'[java.awt.image BufferedImage]))
|
||||
|
||||
(defn rgb-to-gray [color-image]
|
||||
(let [width (.getWidth color-image)]
|
||||
(partition width
|
||||
(for [x (range width)
|
||||
y (range (.getHeight color-image))]
|
||||
(let [rgb (.getRGB color-image x y)
|
||||
rgb-object (new Color rgb)
|
||||
r (.getRed rgb-object)
|
||||
g (.getGreen rgb-object)
|
||||
b (.getBlue rgb-object)
|
||||
a (.getAlpha rgb-object)]
|
||||
;Compute the grayscale value an return it: L = 0.2126·R + 0.7152·G + 0.0722·B
|
||||
(+ (* r 0.2126) (* g 0.7152) (* b 0.0722)))))))
|
||||
|
||||
|
||||
(defn write-matrix-to-image [matrix filename]
|
||||
(ImageIO/write
|
||||
(let [height (count matrix)
|
||||
width (count (first matrix))
|
||||
output-image (new BufferedImage width height BufferedImage/TYPE_BYTE_GRAY)]
|
||||
(doseq [row-index (range height)
|
||||
column-index (range width)]
|
||||
(.setRGB output-image column-index row-index (.intValue (nth (nth matrix row-index) column-index))))
|
||||
output-image)
|
||||
"png"
|
||||
(new File filename)))
|
||||
|
||||
(println
|
||||
(write-matrix-to-image
|
||||
(rgb-to-gray
|
||||
(ImageIO/read (new File "test.jpg")))
|
||||
"test-gray-cloj.png"))
|
||||
Loading…
Add table
Add a link
Reference in a new issue