Friday, May 04, 2012

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

buf = new int[wr.getNumDataElements()]
buf2 = new int[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] = (ly%2==0)?255:0
    wr2.setPixel(lx, ly, buf2)
  }
}
ImageIO.write(img2, "png", new File("hstripe.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Thursday, May 03, 2012

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

buf = new int[wr.getNumDataElements()]
buf2 = new int[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%2==0)?255:0
    wr2.setPixel(lx, ly, buf2)
  }
}
ImageIO.write(img2, "png", new File("vstripe.png"))

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Wednesday, May 02, 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 tf = new TwirlFilter()
// 角度 
tf.setAngle(1.5f)
// 中央座標X
tf.setCentreX(0.5f)
// 中央座標Y
tf.setCentreY(0.5f)
// 半径
tf.setRadius(120f)
img = tf.filter(img, null)

ImageIO.write(img, "png", new File("twirl.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()

buf = new int[wr.getNumDataElements()]
buf2 = new int[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] = 127
    wr2.setPixel(lx, ly, buf2)
  }
}
ImageIO.write(img2, "png", new File("alpha.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 img2 = new BufferedImage(
  img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB
)
def gr = img2.createGraphics()
gr.setColor(new Color(1F, 1F, 1F, 1F))
def rr = new RoundRectangle2D.Double(
    0.0, 0.0, img.getWidth()-1, img.getHeight()-1, 20.0*2, 20.0*2)
gr.fill(rr)
// 切り取り 
gr.setComposite(AlphaComposite.SrcIn)
gr.drawImage(img,0,0,null)
gr.dispose()

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

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4

Tuesday, May 01, 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"))

// 明るさを150% 
def ctf = new ContrastFilter()
ctf.setBrightness(1.5f)
img = ctf.filter(img, null)

ImageIO.write(img, "png", new File("brightness.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 GaussianFilter()
gf.setRadius(3f)
img = gf.filter(img, null)

ImageIO.write(img, "png", new File("blur.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 ivf = new InvertFilter()
img = ivf.filter(img, null)

ImageIO.write(img, "png", new File("invert.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 qf = new QuantizeFilter()
// 色数
qf.setNumColors(64)
// ディザ使用 
qf.setDither(true)
// サーペンタインパターンを使用するか
qf.setSerpentine(true)
img = qf.filter(img, null)

ImageIO.write(img, "png", new File("quantize.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 tf = new ThresholdFilter(127)
img = tf.filter(img, null)

ImageIO.write(img, "png", new File("threshold.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 ff = new FlipFilter()
ff.setOperation(FlipFilter.FLIP_V);
img2 = ff.filter(img, null)

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

// 左右反転
ff.setOperation(FlipFilter.FLIP_H);
img3 = ff.filter(img, null)

ImageIO.write(img3, "png", new File("hflip.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 ef = new EdgeFilter()
img = ef.filter(img, null)

ImageIO.write(img, "png", new File("edge.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"))

// コントラストを50% 
def ctf = new ContrastFilter()
ctf.setContrast(0.5f)
img = ctf.filter(img, null)

ImageIO.write(img, "png", new File("contrast.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 df = new DiffuseFilter()
df.setScale(5)
img = df.filter(img, null)

ImageIO.write(img, "png", new File("diffuse.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 grf = new GrayscaleFilter()
img = grf.filter(img, null)

ImageIO.write(img, "png", new File("grayscale.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 df = new DiffuseFilter()
df.setScale(1)
def img2 = df.filter(img, null)

// メディアンフィルタ
def mf = new MedianFilter()
img2 = mf.filter(img2, null)

// グレースケールフィルタ
def grf = new GrayscaleFilter()
img2 = grf.filter(img2, null)

// コントラストを150% 
def ctf = new ContrastFilter()
ctf.setContrast(1.5f)
img2 = ctf.filter(img2, null)

def img3 = new BufferedImage(
  img.getWidth(), img.getHeight(), 
  BufferedImage.TYPE_INT_ARGB
)
def ff = new FillFilter((int)0xffffbb33)
img3 = ff.filter(img3, null)

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

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

元画像
出力画像

動作環境
groovy 1.8.6, JDK7 update4