原始 MediaWiki 页面

我知道编辑这个网站吗?

混合两个图像

自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南

目的

Clojure剧本说明如何:

  • 从互联网上获取图像
  • 提取并迭代/图像循环上的像素
  • 创建一个新图像 -将图像的像素设置为新值,在本例中为两个图像的随手

该片由编剧阿尔伯特·卡多纳 (Albert Cardona) 维护。

##代码

; Albert Cardona 20080427 at MPI-CBG Dresden Fiji hackathon.

; Opens a URL file path as an image
(let [opener (new ij.io.Opener)]
  (defn open-url [url]
    (.openURL opener url)))

; Fetch two example 512x512 images from the net
(let [baboon (open-url "https://imagej.net/ij/images/baboon.jpg")
      bridge (open-url "https://imagej.net/ij/images/bridge.gif")]
  ; Obtain color channel byte arrays for baboon color image
  (let [len (count (.. baboon (getProcessor) (getPixels))) ; could also say (* 512 512)
    r (make-array Byte/TYPE len)
    g (make-array Byte/TYPE len)
    b (make-array Byte/TYPE len)
    br (.. bridge (getProcessor) (getPixels))]
    ; Fill a copy of the channel arrays
    (.. baboon (getProcessor) (getRGB r g b))
    ; Blend the bridge pixels into each color channel of the baboon image
    (defn avg-byte [a b]
      (byte (/ (+ (bit-and a 255) b) 2)))
    (dotimes [i len]
      (let [pix (bit-and (aget br i) 255)]
    (aset r i (avg-byte (aget r i) pix))
    (aset g i (avg-byte (aget g i) pix))
    (aset b i (avg-byte (aget b i) pix))))
    ; Set the color channels
    (.. baboon (getProcessor) (setRGB r g b))
    ; Done!
    (.show baboon)))

; The above script is ready for a lot of macro abstraction

另请参阅

Clojure Scripting