rlm@0: (ns rlm.clipboard rlm@0: (:import java.awt.datatransfer.Transferable) rlm@0: (:import java.awt.Toolkit) rlm@0: (:import sun.awt.X11.XClipboard) rlm@0: (:import java.awt.datatransfer.DataFlavor) rlm@0: (:use [clojure.contrib [duck-streams :only [file-str]]]) rlm@0: (:use rlm.shell-inspect)) rlm@0: rlm@0: (import '(javax.imageio.stream FileImageOutputStream)) rlm@0: (import '(javax.imageio ImageWriteParam IIOImage)) rlm@0: (import '(javax.imageio ImageIO) ) rlm@0: (import '(java.io File) ) rlm@0: rlm@0: (def clip (.getSystemClipboard (Toolkit/getDefaultToolkit))) rlm@0: rlm@0: (defn get-clipboard-image rlm@0: "if the clipboard has an image, return it" rlm@0: [] rlm@0: (.getTransferData rlm@0: (.getContents rlm@0: (.getSystemClipboard rlm@0: (Toolkit/getDefaultToolkit)) nil) rlm@0: DataFlavor/imageFlavor)) rlm@0: rlm@0: rlm@0: (def *ext* "jpg") rlm@0: rlm@0: (defn writeJpg rlm@0: "WTF is this shit?!" rlm@0: [image #^File target quality] rlm@0: (let [jpgWriter (.next (ImageIO/getImageWritersByFormatName *ext*))] rlm@0: (doto (.getDefaultWriteParam jpgWriter) rlm@0: (.setCompressionMode ImageWriteParam/MODE_EXPLICIT) rlm@0: (.setCompressionQuality quality)) rlm@0: (doto jpgWriter rlm@0: (.setOutput (FileImageOutputStream. target)) rlm@0: (.write (IIOImage. image nil nil)) rlm@0: (.dispose)))) rlm@0: rlm@0: rlm@0: (defn save-clipboard rlm@0: [target] rlm@0: (writeJpg rlm@0: (get-clipboard-image) rlm@0: (file-str target) rlm@0: 1)) rlm@0: rlm@0: (def counter rlm@0: (let [count (atom 0)] rlm@0: (fn [] (swap! count inc)))) rlm@0: rlm@0: rlm@0: (defn clipsave [] rlm@0: (save-clipboard (str "/home/r/Desktop/cedba/homo/" (counter) ".jpg"))) rlm@0: rlm@0: rlm@0: (if (command-line?) (clipsave)) rlm@0: