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(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

No comments: