Saturday, April 25, 2009

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

ScriptomとImageMagickでカウントダウン動画を作成するには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
fn = 0
fnames = []
for(ct in 3..0){
25.times {
fnames << "img${fn.toString().padLeft(3, "0")}.jpg"
im.convert("-size", "200x200", "xc:white", "-font", "Tahoma",
"-gravity", "center", "-pointsize", "120",
"-fill", "black", "-annotate", "0", ct.toString(),
fnames[fn])
fn++
}
}
im.convert("img*.jpg", "sample1080a.mpeg")
for(ct in fn-1..0){
new File(fnames[ct]).delete()
}
}

出力動画(sample1080a.mpeg)
video

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

pycairooで画像をグレースケールに変換する

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


# 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):
ia[ip+0] = ia[ip+1] = ia[ip+2] = \
chr((ord(ia[ip+0]) + ord(ia[ip+1]) + ord(ia[ip+2]))/3)

surface.write_to_png('sample1032a.png')


元画像(sf.png)


出力画像(sample1032a.png)
pycairoでグレースケールに変換した画像

動作環境
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", "rectangle 10,10,189,189",
"sample1067a.png")
}

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


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

関連項目
ScriptomとImageMagickで楕円を描画する
ScriptomとImageMagickで円を描画する
ScriptomとImageMagickで直線を描画する
groovyで四角を描画する (GraphicsBuilderで四角を描画する場合)

Friday, April 24, 2009

ImageMagickで画像を扇形に変形させる

ImageMagickで画像を扇形に変形させるには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf2.jpg -alpha activate -virtual-pixel transparent -distort arc "120 0 200 0" sample934a.png

%im%\convert.exe sf2.jpg -alpha activate -virtual-pixel transparent -distort arc "100 0 200 50" sample934b.png

元画像(sf2.jpg)


出力画像1(sample934a.png)


出力画像2(sample934b.png)
ImageMagickで扇形に変形させた画像

関連項目
ImageMagickとPHPで画像を扇形に変形させる (Imagickによる同様の処理)
ImageMagickで画像を変形させる

ScriptomとImageMagickで画像を拡散させる

ScriptomとImageMagickで画像を拡散させるには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-spread", "5", "sample1066a.png")
}

出力画像(sample1066a.png)
ScriptonとImageMagickで拡散させた画像

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

関連項目
groovyで画像を拡散させる (GraphicsBuilderによる同様の処理)

pixbufで彩度を変更する

pixbufで彩度を変更するには、以下のコードを実行します。


# coding=UTF-8
import gtk

pb = gtk.gdk.pixbuf_new_from_file("sf.jpg")
pb.saturate_and_pixelate(pb, 0.2, False)
pb.save('sample1031a.jpg', 'jpeg', {'quality':'100'})

pb2 = gtk.gdk.pixbuf_new_from_file("sf.jpg")
pb2.saturate_and_pixelate(pb2, 2.0, False)
pb2.save('sample1031b.jpg', 'jpeg', {'quality':'100'})


元画像(sf.jpg)


出力画像(sample1031a.jpg)
pixbufで彩度を落とした画像

出力画像2(sample1031b.jpg)
pixbufで彩度を上げた画像

groovyで図形を回転させる

groovyで図形を回転させるには、以下のコードのようにrotateを使用します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample947a.png", 200, 200){
antialias("on")
butterflyShape( x: 0, y: 0, width: 200, height: 200,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
){
transformations{
rotate(angle:45, x:100, y:100)
}
}
}


出力画像(sample947a.png)
groovyでの図形回転例


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

関連項目
SVGRendererで図形を回転させる (SVGRendererでの同様の処理)

Thursday, April 23, 2009

RMagickで指定した矩形領域以外を暗くする

RMagickで指定した矩形領域以外を暗くするには、以下のコードを実行します。


require 'RMagick'
include Magick

# 画像の任意の矩形領域の境界をぼかしてその領域以外を暗くする
# 余白
padx = 20
pady = 20

images = ImageList.new("sf.jpg")
images.alpha = ActivateAlphaChannel
img2 = Image.new(images.columns, images.rows){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "blue"
dr.rectangle(padx,pady,images.columns-padx-1,images.rows-pady-1)
dr.draw(img2)
img2 = images.composite(
img2.blur_channel(0,5,AllChannels),
0, 0, DstInCompositeOp);

images = images.quantum_operator(MultiplyQuantumOperator, 0.5,
DefaultChannels).
composite(img2, NorthWestGravity, 0, 0, OverCompositeOp).
write("sample936a.jpg")

exit


元画像(sf.jpg)


出力画像(sample936a.jpg)
RMagickで指定した領域以外を暗くした画像

動作環境
ruby1.8.6, rmagick2.7.1

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", "ellipse 100,100,80,50,0,360",
"sample1065a.png")
}

出力画像(sample1065a.png)


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

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

pixbufでJPEGを読み込んでpycairoでPNGで保存する

pixbufでJPEGを読み込んでpycairoでPNGで保存するには、以下のコードを実行します。

# coding=UTF-8
import cairo
import gtk

pb = gtk.gdk.pixbuf_new_from_file("sample3b.jpg")

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32,
pb.get_width(), pb.get_height())
ctx = cairo.Context(surface)
ctx2 = gtk.gdk.CairoContext(ctx)

ctx2.set_source_pixbuf(pb, 0, 0)
ctx2.paint()

surface.write_to_png('sample1030a.png')

元画像(sample3b.jpg)


出力画像(sample1030a.png)


pixbufを使用するには、
pycairoをWindowsにインストール
の手順と以下を実行します。

1.以下のURLからpygobjectをダウンロードして実行。
http://ftp.gnome.org/pub/gnome/binaries/win32/pygobject/2.14/
pygobject-2.14.2-2.win32-py2.6.exe

2.以下のURLからpygtkをダウンロードして実行。
http://ftp.gnome.org/pub/gnome/binaries/win32/pygtk/2.12/
pygtk-2.12.1-3.win32-py2.6.exe

関連情報
pycairoのまとめ

Wednesday, April 22, 2009

ScriptomとImageMagickで画像をグレースケールに変換する

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


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-colorspace", "gray", "sample1064a.png")
}


元画像(sf.jpg)


出力画像(sample1064a.png)
ScriptomとImageMagickでグレースケールに変換した画像

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

関連項目
ScriptomとImageMagickで画像を反転させる

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 Im4java9
{
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.fx("i%2*j%2?p:p*0.7");
op.addImage("sample1028a.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");
*/
}
}
}


出力画像(sample1028a.png)
im4javaで網掛けした画像

関連情報
im4javaのまとめ

im4javaのホームページ
im4java

groovyでシェイプをぼかす

groovyでシェイプをぼかすには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
imgb = gr.render(200, 200){
antialias("on")
butterflyShape( x: 10, y: 10, width: 180, height: 180,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}
gr.renderToFile("sample946a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, image: imgb )
filters {
gaussianBlur(radius:10)
}
}
}


出力画像(sample946a.png)
groovyでシェイプをぼかした画像

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

関連項目
groovyで画像をぼかす

Tuesday, April 21, 2009

ImageMagickで画像をゴーストっぽく変換する

ImageMagickで画像をゴーストっぽく変換するには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf2.jpg -colorspace gray -edge 1 -blur 0x1 -spread 1 -motion-blur 0x10+260 -fill #204070 -tint 50%% sample933a.png

元画像(sf2.jpg)


出力画像(sample933a.png)
ImageMagickでゴースト風に変換した画像

関連項目
RMagickで画像をゴースト画像っぽく変換する (RMagickでの似た処理)

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

ctx.rectangle(10, 50, 180, 100)
ctx.set_source_rgba(0x00/float(0xff), 0x00/float(0xff),
0x00/float(0xff), 0x80/float(0xff))
ctx.fill()

surface.write_to_png('sample1027a.png')

元画像(sf.jpg)


出力画像(sample1027a.png)
pycairoで描画した半透明の四角

動作環境
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", "circle 100,100,190,100",
"sample1063a.png")
}

出力画像(sample1063a.png)
ScriptomとImageMagickで描画した円

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

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

Monday, April 20, 2009

ScriptomとImageMagickで画像を2値化する

ScriptomとImageMagickで画像を2値化するには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-threshold", "60%", "sample1062a.png")
}

元画像(sf.jpg)



出力画像(sample1062a.png)
Scriptomとgroovyで2値化した画像

関連項目
ScriptomとImageMagickで画像を反転させる

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

ctx.set_operator(cairo.OPERATOR_IN)

ctx.move_to(100, 20)
ctx.line_to(20, 180)
ctx.line_to(180, 180)
ctx.close_path()
ctx.fill()

surface.write_to_png('sample1026a.png')

元画像(sf.png)


出力画像(sample1026a.png)
pycairoで三角形に切り取った画像
動作環境
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("sample3b.jpg"))
w = img.getWidth()
h = img.getHeight()
println("w:${w}, h:${h}")

gr = new GraphicsRenderer()
gr.renderToFile("sample945a.png", w*2, h*2){
antialias("on")
rect( x: 0, y: 0, width: w, height: h,
borderColor: no){
texturePaint(x: 0, y: 0, image: img )
filters {
grayscale()
}
}
rect( x: w, y: 0, width: w, height: h,
borderColor: no){
texturePaint(x: 0, y: 0, image: img )
filters {
invert()
grayscale()
}
}
rect( x: 0, y: h, width: w, height: h,
borderColor: no){
texturePaint(x: 0, y: 0, image: img )
filters {
invert()
grayscale()
}
}
rect( x: w, y: h, width: w, height: h,
borderColor: no){
texturePaint(x: 0, y: 0, image: img )
filters {
grayscale()
}
}
}


元画像(sample3b.jpg)


出力画像(sample945a.png)


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

関連項目
groovyで画像をグレースケールに変換する
groovyで画像を反転させる

Sunday, April 19, 2009

ScriptomとImageMagickで直線を描画する

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


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("-size", "200x200", "xc:none",
"-stroke", "#bbddff", "-linewidth", "10",
"-draw", "line 0,0, 199,199", "sample1061a.png")
}


出力画像(sample1061a.png)
ScriptomとImageMagickで描画した直線



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

関連項目
ScriptomとImageMagickで画像を反転させる
groovyで直線を描画する (GraphicsBuilderで直線を描画する場合)

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)

x1 = x2 = 100
r1 = 0
y1 = y2 = 100
r2 = 100

rg = cairo.RadialGradient(x1, y1, r1, x2, y2, r2)
rg.add_color_stop_rgba(0.00, 1, 1, 1, 1)
rg.add_color_stop_rgba(0.75, 1, 1, 1, 0.9)
rg.add_color_stop_rgba(1.00, 1, 1, 1, 0)

psp = cairo.SurfacePattern(img)

ctx.set_source(psp)
ctx.mask(rg)

surface.write_to_png('sample1025a.png')

元画像(sf.png)


出力画像(sample1025a.png)
pycairoで半透明円に切り取った画像

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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

pycairoで放射グラデーションを描画する

RMagickで画像をセピア調のスケッチ画像に変換する

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

require 'RMagick'
include Magick

# 画像を端がちぎれたようなセピア調のスケッチ画像に変換する
# 余白
padx = 10
pady = 10
images = ImageList.new("sf.jpg")
images[0] = images.modulate(0.8,1.0,1.0).
sepiatone(QuantumRange*0.80).sketch(0,10,120)
images.alpha = ActivateAlphaChannel

img2 = Image.new(images.columns, images.rows){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.rectangle(padx, pady,
images.columns-padx, images.rows-pady)
dr.draw(img2)

images.first.composite(img2.spread(5).median_filter(3),
0, 0, DstInCompositeOp).write("sample935.png")

exit


元画像(sf.jpg)


出力画像(sample035.png)
RMagickでセピア調のスケッチ画像に変換した画像

動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、画像を端がちぎられたようなスケッチ調の画像に変換する