@Grab(group='com.github.sarxos', module='webcam-capture', version='0.3.9') import java.awt.* import java.awt.image.* import javax.imageio.* import com.github.sarxos.webcam.* def webcam = Webcam.getDefault() if( webcam == null )return println "Webcam: " + webcam.getName() webcam.setViewSize(new Dimension(640, 480)) webcam.open() BufferedImage image = webcam.getImage() ImageIO.write(image, "PNG", new File("test.png"))
Friday, August 22, 2014
groovyとWebcam CaptureでWebカメラから画像を保存する
groovyとWebcam CaptureでWebカメラから画像を保存するには、以下のコードを実行します。
Monday, October 15, 2012
groovyで画像を万華鏡のように変換する
groovyで画像を万華鏡のように変換するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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")) KaleidoscopeFilter kf = new KaleidoscopeFilter() // 面数 kf.setSides(7) // 角度1 kf.setAngle((float)40f/180f*ImageMath.PI) // 角度2 kf.setAngle2((float)10f/180f*ImageMath.PI) // 中心X kf.setCentreX(0.5f) // 中心Y kf.setCentreY(0.5f) // 半径 kf.setRadius((int)(img.getWidth()>img.getHeight()?img.getWidth()/2:img.getHeight()/2)) img = kf.filter(img, null) ImageIO.write(img, "png", new File("kaleidoscope.png"))
元画像

出力画像

動作環境
groovy 1.8.6, JDK7 update4
Saturday, October 13, 2012
groovyでチェック柄の布の模様を生成する
groovyでチェック柄の布の模様を生成するには、以下のコードを実行します。
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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.image.* // チェック柄の布の模様を生成する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def rectsize = 20 Color color1 = new Color((int)0x588F27) Color color1l = color1.darker() Color color2 = new Color((int)0xBF372A) Color color2l = color2.darker() def gr = img.createGraphics() for(int ly=0;ly<img.getHeight();ly+=rectsize){ def cc=((int)ly/rectsize)%2==0?0:1 for(int lx=0;lx<img.getWidth();lx+=rectsize){ if( cc%2 == 0 ){ for(int py=0;py<=rectsize;py+=2){ gr.setColor(color1) gr.drawLine(lx, ly+py, lx+rectsize, ly+py) gr.setColor(color1l) gr.drawLine(lx, ly+py+1, lx+rectsize, ly+py+1) } } else { for(int px=0;px<=rectsize;px+=2){ gr.setColor(color2) gr.drawLine(lx+px, ly, lx+px, ly+rectsize) gr.setColor(color2l) gr.drawLine(lx+px+1, ly, lx+px+1, ly+rectsize) } } cc++ } } def sf = new SmearFilter() sf.setShape(SmearFilter.CROSSES) sf.setDensity(0.9f) sf.setDistance(7) sf.setScatter(0.8f) //sf.setAngle((float)30*ImageMath.PI/180) img = sf.filter(img, null) ImageIO.write(img, "png", new File("checkerfabric.png"))
出力画像

動作環境
groovy 1.8.6, JDK7 update4
Friday, October 12, 2012
groovyで写真を夕暮れ風に加工する
groovyで写真を夕暮れ風に加工するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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 gr = imga.createGraphics() gr.drawImage(img,0,0,null) gr.dispose() // 閾値で2色画像を作成 def threshold = 127 def white = (int)0x50F24405 def black = (int)0x503E606F def wr = imga.getRaster() def buf = new int[4] for(int ly=0;ly<wr.getHeight();ly++){ for(int lx=0;lx<wr.getWidth();lx++){ wr.getPixel(lx, ly, buf) if( PixelUtils.brightness((buf[0]<<16)+(buf[1]<<8)+buf[2]) > threshold ){ buf[0] = (white >> 16) & 0xff buf[1] = (white >> 8) & 0xff buf[2] = white & 0xff buf[3] = (white >> 24) & 0xff } else { buf[0] = (black >> 16) & 0xff buf[1] = (black >> 8) & 0xff buf[2] = black & 0xff buf[3] = (black >> 24) & 0xff } wr.setPixel(lx, ly, buf) } } // ぼかす def gf = new GaussianFilter() gf.setRadius(3f) imga = gf.filter(imga, null) // 重ね合わせ def gr2 = img.createGraphics() gr2.drawImage(imga,0,0,null) gr2.dispose() ImageIO.write(img, "png", new File("sunset.png"))
元画像

出力画像

動作環境
groovy 1.8.6, JDK7 update4
Tuesday, October 09, 2012
groovyでタイル模様のグラデーションを描画する
groovyでタイル模様のグラデーションを描画するには、以下のコードを実行します。
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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.image.* // タイル模様のグラデーションを描画する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def tilesize = 16 def padding = 2 def interval = tilesize + padding*2 def lc = new LinearColormap((int)0xFFF24405, (int)0xFFF7E967) def gr = img.createGraphics() def dc = (float)1/Math.ceil(img.getHeight()/interval) float colorpos = 0f for(int ly=0;ly<img.getHeight();ly+=interval){ gr.setColor(new Color(lc.getColor(colorpos))) colorpos += dc for(int lx=0;lx<img.getWidth();lx+=interval){ gr.fillRect(lx+padding, ly+padding, tilesize, tilesize) } } ImageIO.write(img, "png", new File("drawgradienttiles.png"))
出力画像

動作環境
groovy 1.8.6, JDK7 update4
Saturday, October 06, 2012
groovyで画像を着色して強調する
groovyで画像を着色して強調するには、以下のコードを実行します。トイカメラ風に色がついた画像に変換します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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 ff = new FillFilter((int)0xffad63e3) img2 = ff.filter(img2, null) def cf = new CompositeFilter( MiscComposite.getInstance(MiscComposite.BLEND, 0.3f)) img = cf.filter(img2, img) // コントラストを250% def ctf = new ContrastFilter() ctf.setContrast(2.5f) img = ctf.filter(img, null) ImageIO.write(img, "png", new File("tintcontrast.png"))
元画像

出力画像

動作環境
groovy 1.8.6, JDK7 update4
groovyでかすれた感じの透過2値化画像に変換する
groovyでかすれた感じの透過2値化画像に変換するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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.* // かすれた感じの透過2値化画像 def img = ImageIO.read(new File("sf2.jpg")) def imga = new BufferedImage( img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB ) def gr = imga.createGraphics() gr.drawImage(img,0,0,null) gr.dispose() def threshold = 127 def white = (int)0x00000000 def black = (int)0xff1C425C def wr = imga.getRaster() def buf = new int[4] for(int ly=0;ly<wr.getHeight();ly++){ for(int lx=0;lx<wr.getWidth();lx++){ wr.getPixel(lx, ly, buf) if( PixelUtils.brightness((buf[0]<<16)+(buf[1]<<8)+buf[2]) > threshold ){ buf[0] = (white >> 16) & 0xff buf[1] = (white >> 8) & 0xff buf[2] = white & 0xff buf[3] = (white >> 24) & 0xff } else { buf[0] = (black >> 16) & 0xff buf[1] = (black >> 8) & 0xff buf[2] = black & 0xff buf[3] = (black >> 24) & 0xff } wr.setPixel(lx, ly, buf) } } def df = new DiffuseFilter() df.setScale(2) imga = df.filter(imga, null) ImageIO.write(imga, "png", new File("threshold3diffuse.png"))
元画像

出力画像

動作環境
groovy 1.8.6, JDK7 update4
groovyでエッジ抽出した透過画像を作成する
groovyでエッジ抽出した透過画像を作成するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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 gr = imga.createGraphics() gr.drawImage(img,0,0,null) gr.dispose() // グレースケールフィルタ def grf = new GrayscaleFilter() imga = grf.filter(imga, null) // エッジ抽出 def ef = new EdgeFilter() imga = ef.filter(imga, null) def lc = new LinearColormap((int)0x00000000, (int)0xff7799dd) LookupFilter lf = new LookupFilter(lc) imga = lf.filter(imga, null) ImageIO.write(imga, "png", new File("edgetransparency.png"))
元画像

出力画像

動作環境
groovy 1.8.6, JDK7 update4
Tuesday, October 02, 2012
groovyで手書き風タイル模様を描画する
groovyで手書き風タイル模様を描画するには、以下のコードを実行します。
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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.image.* // 手書き風タイル模様を描画する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def tilesize = 16 def padding = 2 def interval = tilesize + padding*2 Color color1 = new Color((int)0x5E728C) def gr = img.createGraphics() gr.setColor(color1) for(int ly=0;ly<img.getHeight();ly+=interval){ for(int lx=0;lx<img.getWidth();lx+=interval){ gr.fillRect(lx+padding, ly+padding, tilesize, tilesize) } } def df = new DiffuseFilter() df.setScale((int)padding) img = df.filter(img, null) def mf = new MedianFilter() img = mf.filter(img, null) ImageIO.write(img, "png", new File("drawtileshand.png"))
出力画像

動作環境
groovy 1.8.6, JDK7 update4
Saturday, September 29, 2012
groovyで画像を強調したモノトーンに変換する
groovyで画像を強調したモノトーンに変換するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@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.image.* // 画像を強調したモノトーンに変換する def img = ImageIO.read(new File("sf2.jpg")) def bf = new BumpFilter() img = bf.filter(img, null) def wr = img.getRaster() buf = new int[wr.getNumDataElements()] def color1 = 0x99bbee def red = (color1 >> 16) & 0xff def green = (color1 >> 8) & 0xff def blue = color1 & 0xff for(int ly=1;ly<wr.getHeight();ly++){ for(int lx=0;lx<wr.getWidth();lx++){ wr.getPixel(lx, ly, buf) def mono = (buf[0] * 77 + buf[1] * 151 + buf[2] * 28) >> 8; buf[0] = (int)(mono * red / 255) buf[1] = (int)(mono * green / 255) buf[2] = (int)(mono * blue / 255) wr.setPixel(lx, ly, buf) } } ImageIO.write(img, "png", new File("bumpmonotone.png"))
元画像

出力画像

動作環境
groovy 1.8.6, JDK7 update4
Subscribe to:
Posts (Atom)