(ns outliner.boundaries.dom.image-utils) (defn resize-image [file max-dim] (js/Promise. (fn [resolve reject] (let [reader (js/FileReader.)] (set! (.-onload reader) (fn [e] (let [img (js/Image.)] (set! (.-onload img) (fn [] (let [canvas (js/document.createElement "canvas") ctx (.getContext canvas "2d") w (.-width img) h (.-height img) scale (if (> (max w h) max-dim) (/ max-dim (max w h)) 1) new-w (* w scale) new-h (* h scale)] (set! (.-width canvas) new-w) (set! (.-height canvas) new-h) (.drawImage ctx img 0 0 new-w new-h) (resolve (.toDataURL canvas "image/jpeg" 0.8))))) (set! (.-onerror img) #(reject %)) (set! (.-src img) (.. e -target -result))))) (set! (.-onerror reader) #(reject %)) (.readAsDataURL reader file)))))