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

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

Thursday, March 15, 2012

Luaでハッチングパターンを塗りつぶしする

Luaでハッチングパターンを塗りつぶしするには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 150, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- ハッチング線を描画(HORIZONTAL)
canvas:Hatch(cd.HORIZONTAL)
canvas:Box(0, 100, 100, 150)

-- ハッチング線を描画(VERTICAL)
canvas:Hatch(cd.VERTICAL)
canvas:Box(100, 200, 100, 150)

-- ハッチング線を描画(FDIAGONAL)
canvas:Hatch(cd.FDIAGONAL)
canvas:Box(0, 100, 50, 100)

-- ハッチング線を描画(BDIAGONAL)
canvas:Hatch(cd.BDIAGONAL)
canvas:Box(100, 200, 50, 100)

-- ハッチング線を描画(CROSS)
canvas:Hatch(cd.CROSS)
canvas:Box(0, 100, 0, 50)

-- ハッチング線を描画(DIAGCROSS)
canvas:Hatch(cd.DIAGCROSS)
canvas:Box(100, 200, 0, 50)

-- ファイルを保存
image:Save("hatch.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Monday, March 12, 2012

Luaで扇形を描画する

Luaで扇形を描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- 扇形を描画
canvas:Sector(100, 100, 180, 180, 30, 150)

-- ファイルを保存
image:Save("sector.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Friday, March 09, 2012

Luaで塗りつぶされた四角を描画する

Luaで塗りつぶされた四角を描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- 塗りつぶされた四角を描画
canvas:Box(10, 190, 50, 150)

-- ファイルを保存
image:Save("box.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Tuesday, March 06, 2012

Luaで円弧を描画する

Luaで円弧を描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- 円弧を描画
canvas:Arc(100, 100, 180, 180, 30, 150)

-- ファイルを保存
image:Save("arc.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Saturday, March 03, 2012

Luaで四角を描画する

Luaで四角を描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- 四角を描画
canvas:Rect(10, 190, 50, 150)

-- ファイルを保存
image:Save("rect.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Wednesday, February 29, 2012

Luaでベジェ曲線を描画する

Luaでベジェ曲線を描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- ベジェ曲線を描画
canvas:Begin(cd.BEZIER)
canvas:Vertex(10, 100)
canvas:Vertex(50, 190)
canvas:Vertex(150, 10)
canvas:Vertex(190, 100)
canvas:End()
canvas:Kill()

-- ファイルを保存
image:Save("bezier.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Sunday, February 26, 2012

Luaでポリゴンを描画する

Luaでポリゴンを描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 描画色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- ポリゴンを描画
canvas:Begin(cd.FILL)
canvas:Vertex(10, 100)
canvas:Vertex(100, 190)
canvas:Vertex(190, 100)
canvas:Vertex(100, 10)
canvas:End()
canvas:Kill()

-- ファイルを保存
image:Save("polygon.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4