Sunday, May 06, 2012

groovyで画像にソラリゼーション処理をかける

groovyで画像にソラリゼーション処理をかけるには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像にソラリゼーション処理をかける
def img = ImageIO.read(new File("sf2.jpg"))

def sf = new SolarizeFilter()
img = sf.filter(img, null)

ImageIO.write(img, "png", new File("solarize.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像に球面レンズのような効果をかける

groovyで画像に球面レンズのような効果をかけるには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像に球面レンズのような効果をかける
def img = ImageIO.read(new File("sf2.jpg"))

def sf = new SphereFilter()
sf.setRadius(80)
img = sf.filter(img, null)

ImageIO.write(img, "png", new File("sphere.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像を油絵風に変換する

groovyで画像を油絵風に変換するには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像を油絵風に変換する
def img = ImageIO.read(new File("sf2.jpg"))

def oilf = new OilFilter()
oilf.setRange(2)
oilf.setLevels(3)
img = oilf.filter(img, null)

ImageIO.write(img, "png", new File("oilpaint.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像にモザイクをかける

groovyで画像にモザイクをかけるには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像にモザイクをかける
def img = ImageIO.read(new File("sf2.jpg"))

def bf = new BlockFilter()
bf.setBlockSize(8)
img = bf.filter(img, null)

ImageIO.write(img, "png", new File("block.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Saturday, May 05, 2012

groovyで画像のエッジを強調する

groovyで画像のエッジを強調するには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// エッジを強調する
def img = ImageIO.read(new File("sf2.jpg"))

def bf = new BumpFilter()
img = bf.filter(img, null)

ImageIO.write(img, "png", new File("bump.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで指定色の枠を描画する

groovyで指定色の枠を描画するには、以下のコードを実行します。
import java.awt.*
import java.awt.image.*
import java.awt.geom.*
import java.io.*
import javax.imageio.*

// 指定色の枠を描画する
def img = ImageIO.read(new File("sf2.jpg"))

def bwidth = 10

def img2 = new BufferedImage(
  img.getWidth()+bwidth*2, img.getHeight()+bwidth*2, 
  BufferedImage.TYPE_INT_ARGB
)
def gr = img2.createGraphics()
gr.setColor(new Color(0xccddff))
def rect = new Rectangle2D.Double(
    0.0, 0.0, img2.getWidth()-1, img2.getHeight()-1)
gr.fill(rect)
gr.drawImage(img, bwidth, bwidth, null)
gr.dispose()

ImageIO.write(img2, "png", new File("border.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像にグロー効果をかける

groovyで画像にグロー効果をかけるには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像にグロー効果をかける
def img = ImageIO.read(new File("sf2.jpg"))

def gf = new GlowFilter()
gf.setAmount(0.3f)
img = gf.filter(img, null)

ImageIO.write(img, "png", new File("glow.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像をポスタライズする

groovyで画像をポスタライズするには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像をポスタライズする
def img = ImageIO.read(new File("sf2.jpg"))

def pf = new PosterizeFilter()
pf.setNumLevels(4)
img = pf.filter(img, null)

ImageIO.write(img, "png", new File("posterize.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像に透明な斜め線を描画する

groovyで画像に透明な斜め線を描画するには、以下のコードを実行します。
import java.io.*
import java.awt.*
import java.awt.geom.*
import java.awt.image.*
import javax.imageio.*

// 画像に透明な斜め線を描画する
def img = ImageIO.read(new File("sf2.jpg"))
def wr = img.getRaster()
def img2 = new BufferedImage(
  img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB
)
def wr2 = img2.getRaster()

def buf = new int[wr.getNumDataElements()]
def buf2 = new int[4]

def interval = 4

for(int ly=0;ly<wr.getHeight();ly++){
  for(int lx=0;lx<wr.getWidth();lx++){
    wr.getPixel(lx, ly, buf)
    buf2[0] = buf[0]
    buf2[1] = buf[1]
    buf2[2] = buf[2]
    buf2[3] = ((lx+ly)%interval==0)?0:255
    wr2.setPixel(lx, ly, buf2)
  }
}
ImageIO.write(img2, "png", new File("diagonal.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像を点画風に変換する

groovyで画像を点画風に変換するには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 点画風に変換する
def img = ImageIO.read(new File("sf2.jpg"))

def pf = new PointillizeFilter()
// スケール
pf.setScale(5)
// エッジを表示するかどうか
pf.setFadeEdges(true)
// エッジの厚さ
pf.setEdgeThickness(0.4f)
// ランダムさ
pf.setRandomness(0.3f)
// あいまいさ
pf.setFuzziness(0.4f)
img = pf.filter(img, null)

ImageIO.write(img, "png", new File("pointillize.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像に透明な格子を描画する

groovyで画像に透明な格子を描画するには、以下のコードを実行します。
import java.io.*
import java.awt.*
import java.awt.geom.*
import java.awt.image.*
import javax.imageio.*

// 画像に透明な格子を描画する
def img = ImageIO.read(new File("sf2.jpg"))
def wr = img.getRaster()
def img2 = new BufferedImage(
  img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB
)
def wr2 = img2.getRaster()

def buf = new int[wr.getNumDataElements()]
def buf2 = new int[4]


def gridsize = 8
for(int ly=0;ly<wr.getHeight();ly++){
  for(int lx=0;lx<wr.getWidth();lx++){
    wr.getPixel(lx, ly, buf)
    buf2[0] = buf[0]
    buf2[1] = buf[1]
    buf2[2] = buf[2]
    buf2[3] = (lx%gridsize==0 || ly%gridsize==0)?0:255
    wr2.setPixel(lx, ly, buf2)
  }
}
ImageIO.write(img2, "png", new File("grid.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Friday, May 04, 2012

groovyで画像を織物風に変換する

groovyで画像を織物風に変換するには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像を織物風に変換する
def img = ImageIO.read(new File("sf2.jpg"))
def imga = new BufferedImage(
  img.getWidth(), img.getHeight(), 
  BufferedImage.TYPE_INT_ARGB
)

def wf = new WeaveFilter()
img = wf.filter(img, imga)

ImageIO.write(imga, "png", new File("weave.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像にノイズをつける

groovyで画像にノイズをつけるには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 画像にノイズをつける
def img = ImageIO.read(new File("sf2.jpg"))

def nf = new NoiseFilter()
nf.setMonochrome(true)
img = nf.filter(img, null)

ImageIO.write(img, "png", new File("noise.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像の上下に半透明の黒い帯をつける

groovyで画像の上下に半透明の黒い帯をつけるには、以下のコードを実行します。
import java.io.*
import java.awt.*
import java.awt.geom.*
import java.awt.image.*
import javax.imageio.*

// 画像の上下に半透明の黒い帯をつける
def img = ImageIO.read(new File("sf2.jpg"))
def wr = img.getRaster()

def buf = new int[wr.getNumDataElements()]

def bwidth = 20
for(int ly=0;ly<bwidth;ly++){
  for(int lx=0;lx<wr.getWidth();lx++){
    wr.getPixel(lx, ly, buf)
    buf[0] = buf[0]/2
    buf[1] = buf[1]/2
    buf[2] = buf[2]/2
    wr.setPixel(lx, ly, buf)
  }
}
for(int ly=wr.getHeight()-bwidth;ly<wr.getHeight();ly++){
  for(int lx=0;lx<wr.getWidth();lx++){
    wr.getPixel(lx, ly, buf)
    buf[0] = buf[0]/2
    buf[1] = buf[1]/2
    buf[2] = buf[2]/2
    wr.setPixel(lx, ly, buf)
  }
}

ImageIO.write(img, "png", new File("blackband.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像をステンドグラス風に変換する

groovyで画像をステンドグラス風に変換するには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.awt.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// ステンドグラス風に変換する
def img = ImageIO.read(new File("sf2.jpg"))

def cf = new CrystallizeFilter()
// スケールの設定
cf.setScale(8)
// エッジを消すかどうか
cf.setFadeEdges(false)
// エッジの幅
cf.setEdgeThickness(0.4f)
// ランダムさ
cf.setRandomness(0.5f)

img = cf.filter(img, null)

ImageIO.write(img, "png", new File("crystallize.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

groovyで画像をビデオ風にする

groovyで画像をビデオ風にするには、以下のコードを実行します。
import java.io.*
import java.awt.*
import java.awt.geom.*
import java.awt.image.*
import javax.imageio.*

// 画像をビデオ風にする
def img = ImageIO.read(new File("sf2.jpg"))
def wr = img.getRaster()

buf = new int[wr.getNumDataElements()]

for(int ly=1;ly<wr.getHeight();ly+=2){
  for(int lx=0;lx<wr.getWidth();lx++){
    wr.getPixel(lx, ly, buf)
    buf[0] = buf[0]/2
    buf[1] = buf[1]/2
    buf[2] = buf[2]/2
    wr.setPixel(lx, ly, buf)
  }
}
ImageIO.write(img, "png", new File("video.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4