Saturday, May 26, 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 lbf = new LensBlurFilter()
lbf.setRadius(7f)
lbf.setSides(5)
img = lbf.filter(img, null)

ImageIO.write(img, "png", new File("lensblur.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 imga = new BufferedImage(
  img.getWidth(), img.getHeight(), 
  BufferedImage.TYPE_INT_ARGB
)

def cf = new CurlFilter()
cf.setTransition(0.10f)
cf.setAngle((float)210f/180f*ImageMath.PI)
cf.filter(img, imga)

ImageIO.write(imga, "png", new File("curl.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 mf = new MinimumFilter()
img = mf.filter(img, null)

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

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Thursday, May 24, 2012

groovyで画像に水平な半透明のバンドをつける

groovyで画像に水平な半透明のバンドをつけるには、以下のコードを実行します。
@Grab(group='com.jhlabs', module='filters', version='2.0.235')
import java.io.*
import java.awt.*
import java.awt.geom.*
import java.awt.image.*
import javax.imageio.*
import com.jhlabs.composite.*
import com.jhlabs.image.*

// 水平な半透明のバンドをつける
def img = ImageIO.read(new File("sf2.jpg"))
def img2 = new BufferedImage(
  img.getWidth(), img.getHeight(), 
  BufferedImage.TYPE_INT_ARGB
)
def wr = img2.getRaster()

def buf = new int[4]

def color1 = 0xfff0f0f0
def bwidth = 20
for(int ly=0;ly<img.getHeight();ly++){
  if( ly%bwidth < (bwidth/2) ){
    for(int lx=0;lx<img.getWidth();lx++){
      wr.getPixel(lx, ly, buf)
      buf[0] = (color1 >> 16) & 0xff
      buf[1] = (color1 >> 8) & 0xff
      buf[2] = color1 & 0xff
      buf[3] = 0xff
      wr.setPixel(lx, ly, buf)
    }
  }
}

def cf = new CompositeFilter(
  MiscComposite.getInstance(MiscComposite.BLEND, 0.5f))

cf.filter(img2, img)
ImageIO.write(img, "png", new File("hbands.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Wednesday, May 23, 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 = new BufferedImage(
  200, 200, 
  BufferedImage.TYPE_INT_ARGB
)
def grf = new GradientFilter(
  new Point(0, 0), new Point(0, img.getHeight()),
  (int)0xff000000, (int)0xffffffff, 
  false, GradientFilter.LINEAR,
  GradientFilter.INT_SMOOTH)

img = grf.filter(img, null)

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

def lc = new LinearColormap((int)0xFFFFFF10, (int)0xFF3070A0)
LookupFilter lf = new LookupFilter(lc)
img = lf.filter(img, null)

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

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

出力画像

動作環境
groovy 1.8.6, JDK7 update4

Tuesday, May 22, 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 = new BufferedImage(
    200, 200, BufferedImage.TYPE_INT_RGB
)
def pf = new PlasmaFilter()
// 乱れを設定する(0-10)
pf.setTurbulence(1.1f)
// seed設定
pf.setSeed((int)(Math.random()*1000))

img = pf.filter(img, null)

def lc = new LinearColormap((int)0xFF3070A0, (int)0xFFFFFFFF)
LookupFilter lf = new LookupFilter(lc)
img = lf.filter(img, null)

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

出力画像

動作環境
groovy 1.8.6, JDK7 update4

Monday, May 21, 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 gf = new EmbossFilter()
gf.setBumpHeight(3)
img = gf.filter(img, null)

def img2 = new BufferedImage(
    img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_RGB
)
def bmf = new BrushedMetalFilter(
  (int)0xffb0b0b4, // 金属の色
  30, // 水平方向ぼかしのサイズ
  0.55f, // ノイズの量
  false, // モノクロームの場合true
  0.5f // 輝きの量
)
img2 = bmf.filter(img2, null)


def cf = new CompositeFilter(
  MiscComposite.getInstance(MiscComposite.BLEND, 0.7f))
img = cf.filter(img2, img)

ImageIO.write(img, "png", new File("metalemboss.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 = new BufferedImage(
    200, 200, BufferedImage.TYPE_INT_RGB
)
def bmf = new BrushedMetalFilter(
  (int)0xffb0b0b4, // 金属の色
  20, // 水平方向ぼかしのサイズ
  0.15f, // ノイズの量
  false, // モノクロームの場合true
  0.2f // 輝きの量
)

img = bmf.filter(img, null)

ImageIO.write(img, "png", new File("metal.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 EmbossFilter()
gf.setBumpHeight(2)
img = gf.filter(img, null)

// ノイズ
def nf = new NoiseFilter()
nf.setMonochrome(true)
img = nf.filter(img, null)

def img2 = new BufferedImage(
    img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_RGB
)
def wf = new WoodFilter()
// rings value 
wf.setRings(0.5f)
// スケール
wf.setScale(100)
// 伸張率
wf.setStretch(8.0f)
// 角度 
wf.setAngle((float)0f/180f*ImageMath.PI)
// 乱れ 
wf.setTurbulence(0.2f)
// 繊維の量 
wf.setFibres(0.5f)
img2 = wf.filter(img2, null)


def cf = new CompositeFilter(
  MiscComposite.getInstance(MiscComposite.BLEND, 0.6f))
img = cf.filter(img2, img)

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

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Sunday, May 20, 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 = new BufferedImage(
    200, 200, BufferedImage.TYPE_INT_RGB
)
def wf = new WoodFilter()
// rings value 
wf.setRings(0.5f)
// スケール
wf.setScale(100)
// 伸張率
wf.setStretch(8.0f)
// 角度 
wf.setAngle((float)0f/180f*ImageMath.PI)
// 乱れ 
wf.setTurbulence(0.2f)
// 繊維の量 
wf.setFibres(0.5f)
img = wf.filter(img, null)

ImageIO.write(img, "png", new File("wood.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 img2 = new BufferedImage(
  img.getWidth(), img.getHeight(), 
  BufferedImage.TYPE_INT_ARGB
)
def pf = new PlasmaFilter()
// 乱れを設定する(0-10)
pf.setTurbulence(1.1f)
// seed設定
pf.setSeed((int)(Math.random()*1000))
img2 = pf.filter(img2, null)
def grf = new GrayscaleFilter()
img2 = grf.filter(img2, null)

def cf = new CompositeFilter(
  MiscComposite.getInstance(MiscComposite.BLEND, 0.5f))

img = cf.filter(img2, img)
ImageIO.write(img, "png", new File("plasmacomposite.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4