Saturday, May 02, 2009

groovyで2種類の画像を交互に配置して背景画像を作成する

groovyで2種類の画像を交互に配置して背景画像を作成するには、以下のコードを実行します。


import javax.imageio.*;
import groovy.swing.j2d.*

img1 = ImageIO.read(new File("flower1.png"))
img2 = ImageIO.read(new File("flower2.png"))
gr = new GraphicsRenderer()
img = gr.render(img1.width + img2.width,
img1.height + img2.height){
image(image: img1, x:0, y:0)
image(image: img2, x:img1.width, y:0)
image(image: img2, x:0, y:img1.height)
image(image: img1, x:img2.width, y:img2.height)
}
gr.renderToFile("sample951a.png", 200, 200){
antialias("on")
rect(x:0, y:0, width: 200,
height: 200, borderColor:no){
texturePaint(x: 0, y: 0, image: img )
}
}


元画像1(flower1.png)


元画像2(flower2.png)


出力画像(sample951a.png)
groovyで2種類の画像を交互に配置した背景画像

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで画像をグレースケールと反転させたグレースケールを交互に配置した画像に変換する

ScriptomとImageMagickで画像をセピア調に変換する

ScriptomとImageMagickで画像をセピア調に変換するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-sepia-tone", "80%", "sample1074a.png")
}


元画像(sf.jpg)


出力画像(sample1074a.png)
ScriptomとImageMagickでセピア調に変換した画像


動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

関連項目
ImageMagickでグレースケール・白黒・セピア調変換

Friday, May 01, 2009

RMagickで画像を4色グレースケールに変換する

RMagickで画像を4色グレースケールに変換するには、以下のコードを実行します。

require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images.quantize(4, GRAYColorspace).
write("sample938a.jpg")

exit

元画像(sf.jpg)


出力画像(sample938a.jpg)
RMagickで4色グレースケールに変換した画像

動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで画像を4色グレースケールの画像に減色する

ScriptomとImageMagickでポリラインを描画する

ScriptomとImageMagickでポリラインを描画するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("-size", "200x200", "xc:none", "-stroke", "#113377",
"-fill", "#bbddff", "-draw", "polyline 100,0,0,199,199,199",
"sample1073a.png")
}


出力画像(sample1073a.png)
ScriptomとImageMagickで描画したポリライン

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

Thursday, April 30, 2009

groovyで透明な文字列を描画する

groovyで透明な文字列を描画するには、以下のコードを実行します。


import javax.imageio.*;
import groovy.swing.j2d.*

img = ImageIO.read(new File("sf.jpg"))
gr = new GraphicsRenderer()
gr.renderToFile("sample950a.png", img.width, img.height){
antialias("on")
image(image: img)
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'white'){
rect(x:20, y:20, width: img.width-40, height: img.height-40)
text( x:30, y:60, text: "SF")
}
}
gr.renderToFile("sample950b.png", img.width, img.height){
antialias("on")
image(image: img)
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'black', opacity:0.5){
rect(x:20, y:20, width: img.width-40, height: img.height-40)
text( x:30, y:60, text: "SF")
}
}


元画像(sf.jpg)


出力画像1(sample950a.png)


出力画像2(sample950b.png)
groovyで透明な文字列を描画した画像

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで文字列をガラスのように描画する
groovyで日本語を描画する
SVGRendererで透明な文字列を描画する (SVGRendererでの同様の処理)

Im4javaで画像を切り取る

Im4javaで画像を切り取るには、以下のコードを実行します。


import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.97.0-bin.tar.bz2を解凍してim4java-0.97.0.jarはclasspathに通す
public class Im4java11
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.addImage("sf.jpg");
// crop(width, height, x, y)
op.crop(100,100,50,50);
op.addImage("sample1037a.png");
convert.run(op);

}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.97
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}

}


元画像(sf.jpg)


出力画像(sample1037a.png)
im4javaで切り取った画像

関連情報
im4javaのまとめ

im4javaのホームページ
im4java

ScriptomとImageMagickで画像をぼかす

ScriptomとImageMagickで画像をぼかすには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-blur", "0x5", "sample1072a.png")
}


元画像(sf.jpg)


出力画像(sample1072a.png)
ScriptomとImageMagickでぼかした画像

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

Wednesday, April 29, 2009

ImageMagickで画像にストライプ枠をつける

ImageMagickで画像にストライプ枠をつけるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16

%im%\convert.exe -size 1x1 xc:white xc:#99aaff -append -filter point -resize 20x20! -filter mitchell sample939a.png
%im%\convert.exe -size 220x220 tile:sample939a.png -virtual-pixel tile -distort SRT 60 -gravity center sf.jpg -composite sample939b.png


元画像(sf.jpg)


出力画像(sample939b.png)
ImageMagickでストライプの枠をつけた画像

関連項目
ImageMagickで画像に立体的な角丸四角の枠をつける
ImageMagickで、画像に半透明角丸四角の枠をつける
ImageMagickで、縁取りつきの角丸四角で画像を切り取る
ImageMagickで画像に半透明ガラス枠をつける
ImageMagickとPHPで画像にストライプ枠をつける (Imagickでの同様の処理)

im4javaでエッジ抽出をおこなう

im4javaでエッジ抽出をおこなうには、以下のコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.97.0-bin.tar.bz2を解凍してim4java-0.97.0.jarはclasspathに通す
public class Im4java10
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.addImage("sf.jpg");
op.edge(1.0);
op.addImage("sample1036a.png");
convert.run(op);

}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.97
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}
}


出力画像(sample1036a.png)
im4javaでエッジ抽出した画像

関連情報
im4javaのまとめ

im4javaのホームページ
im4java

ScriptomとImageMagickでポリゴンを描画する

ScriptomとImageMagickでポリゴンを描画するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("-size", "200x200", "xc:none", "-stroke", "#113377",
"-fill", "#bbddff", "-draw", "polygon 100,0,0,199,199,199",
"sample1071a.png")
}


出力画像(sample1071a.png)
ScriptomとImageMagickで描画したポリゴン

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

関連項目
groovyでポリゴンを描画する (GraphicsBuilderによる同様の処理)
ScriptomとImageMagickで角丸四角を描画する

Tuesday, April 28, 2009

groovyで画像を半透明にして重ね合わせる

groovyで画像を半透明にして重ね合わせるには、以下のコードを実行します


import javax.imageio.*;
import groovy.swing.j2d.*

img = ImageIO.read(new File("sf.jpg"))
gr = new GraphicsRenderer()
gr.renderToFile("sample949a.png", img.width, img.height){
antialias("on")
image(image: img)
image(file: 'sample3b.jpg', x:10, y:10, opacity:0.5)
}


元画像(sf.jpg)


元画像2(sample3b.jpg)


出力画像(sample949a.png)
groovyで半透明にして重ね合わせた画像

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで画像をグレースケールと反転させたグレースケールを交互に配置した画像に変換する
SVGRendererで画像を半透明にして重ね合わせる (SVGRendererによる同様の処理)

ImageMagickでグラデーションのかかった市松模様を作成する

ImageMagickでグラデーションのかかった市松模様を作成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.5.0-Q16

%im%\convert.exe -set option:distort:viewport 200x200+0+0 pattern:checkerboard -normalize -fill #7799ff -opaque black -virtual-pixel tile -distort SRT 0.25,30 ( -size 200x200 gradient:#22338880-#00000000 ) -composite sample1035a.png

出力画像(sample1035a.png)


関連項目
ImageMagickで画像を縮小してタイル配置にして回転させる
ImageMagickとPHPでグラデーションのかかった市松模様を作成する (Imagickでの同様の処理)

ScriptomとImageMagickでプラズマフラクタル画像を生成する

ScriptomとImageMagickでプラズマフラクタル画像を生成するには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("-size", "200x200", "plasma:fractal",
"sample1070a.png")
}

出力画像(sample1070a.png)
ScriptomとImageMagickで生成したプラズマフラクタル画像

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

関連項目
ScriptomとImageMagickでカウントダウン動画を作成する

Monday, April 27, 2009

RMagickで緑っぽいところ以外をグレースケールにする

RMagickで緑っぽいところ以外をグレースケールにするには、以下のコードを実行します。

require 'RMagick'
include Magick

images = ImageList.new("sample8.jpg")
images.fx("(hue>0.19&&hue<0.40)?p:(r+g+b)/3",
DefaultChannels).write("sample937a.jpg")

exit



出力画像(sample937a.jpg)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで任意の範囲の色相の色を残す (convertコマンドでの同様の処理)

pycairoで画像をビデオ風に加工する

pycairoで画像をビデオ風に加工するには、以下のコードを実行します。


# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
img = cairo.ImageSurface.create_from_png("sf.png")
ctx = cairo.Context(surface)

ctx.set_source_surface(img, 0, 0)
ctx.paint()

ia = surface.get_data()
for ip in range(0, surface.get_stride() *
surface.get_height(), 4):
if (ip/surface.get_stride())%2 == 0 :
ia[ip+0] = chr(ord(ia[ip+0])/2)
ia[ip+1] = chr(ord(ia[ip+1])/2)
ia[ip+2] = chr(ord(ia[ip+2])/2)

surface.write_to_png('sample1034a.png')


元画像(sf.jpg)


出力画像(sample1034a.png)


動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

ScriptomとImageMagickで角丸四角を描画する

ScriptomとImageMagickで角丸四角を描画するには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("-size", "200x200", "xc:none", "-stroke", "#113377",
"-fill", "#bbddff", "-draw", "roundrectangle 10,10,189,189,20,20",
"sample1069a.png")
}

出力画像(sample1069a.png)
ScriptomとImageMagickで描画した角丸四角

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

関連項目
ScriptomとImageMagickで直線を描画する

Sunday, April 26, 2009

pycairoで画像をセピア調に変換する

pycairoで画像をセピア調に変換するには、以下のコードを実行します。


# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
img = cairo.ImageSurface.create_from_png("sf.png")
ctx = cairo.Context(surface)

ctx.set_source_surface(img, 0, 0)
ctx.paint()

ia = surface.get_data()
for ip in range(0, surface.get_stride() *
surface.get_height(), 4):
maxv = max(ord(ia[ip+0]), ord(ia[ip+1]), ord(ia[ip+2]))
minv = max(ord(ia[ip+0]), ord(ia[ip+1]), ord(ia[ip+2]))
pval = (maxv+minv)/2
ia[ip+0] = chr(int(pval * 0x55/float(0xff)))
ia[ip+1] = chr(int(pval * 0xaa/float(0xff)))
ia[ip+2] = chr(int(pval * 0xee/float(0xff)))

surface.write_to_png('sample1033a.png')


元画像(sf.png)


出力画像(sample1033a.png)


動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

groovyで円形以外の部分をグレースケールにする

groovyで円形以外の部分をグレースケールにするには、以下のコードを実行します。


import javax.imageio.*;
import groovy.swing.j2d.*

img = ImageIO.read(new File("sf.jpg"))
gr = new GraphicsRenderer()
gr.renderToFile("sample948a.png", img.width, img.height){
antialias("on")
rect( x: 0, y: 0,
width: img.width, height: img.height,
borderColor: no){
texturePaint(x: 0, y: 0, image: img )
filters {
grayscale()
}
}
ellipse( cx: img.width/2, cy: img.height/2,
radiusx: img.width/2, radiusy: img.height/2,
borderColor: no){
texturePaint(x: 0, y: 0, image: img )
}
}


元画像(sf.jpg)


出力画像(sample948a.png)
groovyで円形以外の部分をグレースケールにした画像

動作環境
Groovy1.6.0, JDK1.6 Update12

ScriptomとImageMagickで画像を上下反転・左右反転させる

ScriptomとImageMagickで画像を上下反転・左右反転させるには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
// 上下反転
im.convert("sf.jpg", "-flip", "sample1068a.png")
// 左右反転
im.convert("sf.jpg", "-flop", "sample1068b.png")
}

元画像(sf.jpg)


出力画像1(sample1068a.png)
ScriptomとImageMagickで上下反転させた画像

出力画像2(sample1068b.png)
ScriptomとImageMagickで左右反転させた画像

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。