Saturday, April 18, 2009

ScriptomとImageMagickで画像を反転させる

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


import org.codehaus.groovy.scriptom.*

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


元画像(sf.jpg)


出力画像(sample1060a.png)


動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable

関連項目
groovyで画像を反転させる (GraphicsBuilderで同様の処理)

pycairoで画像を半透明に重ね合わせる

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

# coding=UTF-8
import cairo

img1 = cairo.ImageSurface.create_from_png("sf.png")
img2 = cairo.ImageSurface.create_from_png("sample3b.png")

ctx = cairo.Context(img1)
ctx.set_source_surface(img2, 50, 50)
ctx.paint_with_alpha(0.5)
img1.write_to_png('sample1024a.png')

元画像1(sf.png)


元画像2(sample3b.png)


出力画像(sample1024a.png)
pycairoで半透明に重ね合わせた画像

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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Friday, April 17, 2009

ImageMagickとPHPで不規則な筋状の画像を生成する

ImageMagickとPHPで不規則な筋状の画像を生成するには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample928(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 不規則な筋状の画像を生成する */
/* 画像サイズ */
$width = 150;
$height = 150;

$im = new Imagick();
$im->newPseudoImage($width, $height, "plasma:fractal");
$im2 = $im->fxImage("intensity");

$im3 = new Imagick();
$im3->newImage(1,1,"#3070A0FF");
$im3->newImage(1,1,"#FFFFFFFF");
$im3->setImageIndex(0);
$im4 = $im3->appendImages(true);

$im2->addImage($im4);
$im2->setImageIndex(0);
$im5 = $im2->fxImage("v.p{0,p}");
$im5->spreadImage(2);
$im5->motionBlurImage(0,100,270);

$im5->writeImage('sample928a.png');

$im5->destroy();
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample928a.png" /><br />

</body>
</html>

出力画像(sample928a.png)
Imagickで生成した不規則な筋上の画像

関連項目
ImageMagickで不規則な筋状の画像を生成する (convertコマンドによる同様の処理)

ImageMagickで光沢のある文字列のプレートを描画する

ImageMagickで光沢のある文字列のプレートを描画するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -fill white -font Arial -pointsize 25 -background none "label:ImageMagick" -bordercolor black -border 10x5 ( +clone -channel rgb -fx "1" -matte -channel a -fx "j<h/2?0:(h-j)/h" ) -composite ( +clone -channel rgb -fx "1" -bordercolor white -border 1x1 -fx "(h-j)/h*p" -distort SRT -10 ) -swap 0,1 -gravity center -composite sample918a.png

%im%\convert.exe sample918a.png -bordercolor black -border 10x10 sample918b.png


出力画像1(sample918a.png)
imagemagickで生成した光沢のあるプレート

出力画像2(sample918b.png):黒背景の余白を追加

pycairoでイタリックの文字列を描画する

pycairoでイタリックの文字列を描画するには、以下のコードを実行します。

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.set_source_rgb(0xbb/float(0xff), 0xdd/float(0xff), 0xff/float(0xff))
ctx.select_font_face("MS 明朝", cairo.FONT_SLANT_ITALIC, cairo.FONT_WEIGHT_NORMAL)
ctx.set_font_size(30);
ctx.move_to(10,100)
ctx.show_text("日本語テスト")
surface.write_to_png('sample1023a.png')

出力画像(sample1023a.png)
pycairoで描画したイタリックの文字列

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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Thursday, April 16, 2009

ImageMagickで画像をブロック風に変換する

ImageMagickで画像をブロック風に変換するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 20x20 xc:black -fill white -draw "ellipse 10,10,6,6,0,360" sample943a.png

%im%\convert.exe sf.jpg -resize 10x10 -modulate 100,140 -filter point -resize 200x200 sample943b.png
%im%\convert.exe sample943b.png -alpha activate ( -size 200x200 tile:sample943a.png -alpha activate -channel a -fx "r" ) -compose dst_in -composite sample943c.png

%im%\convert.exe sample943b.png ( sample943c.png -evaluate multiply 0.8 ) -composite ( sample943c.png -evaluate multiply 0.8 -geometry -1-1 ) -composite ( sample943c.png -evaluate multiply 1.1 -geometry -2-2 ) -composite sample943d.png

元画像(sf.jpg)


出力画像(sample943d.png)


関連項目
ImageMagickとPHPで画像をブロック風に変換する (Imagickでの同様の処理)

pycairoで文字列を描画する

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

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.set_source_rgb(0xbb/float(0xff), 0xdd/float(0xff), 0xff/float(0xff))
ctx.select_font_face("MS 明朝", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
ctx.set_font_size(30);
ctx.move_to(10,100)
ctx.show_text("日本語テスト")
surface.write_to_png('sample1022a.png')

出力画像(sample1022a.png)
pycairoで描画した文字列

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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Wednesday, April 15, 2009

pycairoで画像にモザイクをかける

pycairoで画像にモザイクをかけるには、以下のコードを実行します。

# coding=UTF-8
import cairo

img = cairo.ImageSurface.create_from_png("sf.png")
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32,
img.get_width()/8, img.get_height()/8)
ctx = cairo.Context(surface)
ctx.scale(0.125, 0.125)
ctx.set_source_surface(img, 0, 0)
ctx.paint()
surface2 = cairo.ImageSurface(cairo.FORMAT_ARGB32,
img.get_width(), img.get_height())
ctx2 = cairo.Context(surface2)
ctx2.scale(8, 8)
psp = cairo.SurfacePattern(surface)
psp.set_filter(cairo.FILTER_NEAREST)
ctx2.rectangle(0, 0, 200, 200)
ctx2.set_source(psp)
ctx2.fill()
surface2.write_to_png('sample1021a.png')

元画像(sf.png)


出力画像(sample1021a.png)


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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

RMagickで画像を渦巻き模様で切り取る

RMagickで画像を渦巻き模様で切り取るには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images.alpha = ActivateAlphaChannel
images.new_image(images.columns, images.rows){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.ellipse(images.columns/2, images.rows/2,
images.columns*0.8/2, images.rows*0.8/2,
0, 360)
dr.draw(images);
images.virtual_pixel_method = BackgroundVirtualPixelMethod
images.background_color = "none"
images[images.size-1] = images.blur_channel(0,10,AllChannels).
wave(images.columns/10, images.rows/10).
swirl(800).resize(images.columns, images.rows)
images.first.composite(images[images.size-1], 0, 0,
DstInCompositeOp).write("sample932a.png")


元画像(sf.jpg)


出力画像(sample932a.png)
RMagickで渦巻き模様に切り取った画像

動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで画像を渦巻き模様で切り取る

Tuesday, April 14, 2009

pycairoで画像を縮小する

pycairoで画像を縮小するには、以下のコードを実行します。

# coding=UTF-8
import cairo

img = cairo.ImageSurface.create_from_png("sf.png")
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32,
img.get_width()/2, img.get_height()/2)
ctx = cairo.Context(surface)
ctx.scale(0.5, 0.5)
ctx.set_source_surface(img, 0, 0)
ctx.paint()
surface.write_to_png('sample1020a.png')

元画像(sf.png)


出力画像(sample1020a.png)
pycairoで縮小した画像

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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

ImageMagickとPHPで斜線グラデーション画像を生成する

Imagickで斜線グラデーション画像を生成するには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample927(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 斜線グラデーションの背景を作成する */
/* 画像サイズ */
$width = 300;
$height = 20;
/* 斜線の距離 */
$dl = 5;
/* 明るさ */
$br = 0.6;

$im = new Imagick();
$im->newImage($width, $height, "black");

$im2 = $im->fxImage("(i+j)%" .
$dl . "==0?0:(sin(pi*i/w))*" . $br);
$im2->writeImage('sample927a.png');

$im2->destroy();
$im->destroy();
?>
<img src="sample927a.png" /><br />

</body>
</html>

出力画像(sample927a.png)


関連項目
ImageMagickで斜線グラデーションの背景画像を生成する

Monday, April 13, 2009

pycairoで文字列の領域を求める

pycairoで文字列の領域を求めるには、以下のコードを実行します。以下の例では文字列の領域を暗い青で塗りつぶしています。

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.select_font_face("MS 明朝", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
x = 10
y = 100
ctx.set_font_size(40);
message = "日本語"
(x_bearing, y_bearing, width, height,
x_advance, y_advance) = (
ctx.text_extents(message))

ctx.set_source_rgb(0x11/float(0xff), 0x33/float(0xff), 0x77/float(0xff))
print "x_bearing:", x_bearing
print "y_bearing:", y_bearing
print "width:", width
print "height:", height
print "x_advance:", x_advance
print "y_advance:", y_advance
ctx.rectangle(x+x_bearing, y+y_bearing, width, height)
ctx.fill()

ctx.move_to(x,y)
ctx.set_source_rgb(0xbb/float(0xff), 0xdd/float(0xff), 0xff/float(0xff))
ctx.show_text(message)

surface.write_to_png('sample1019a.png')

出力画像(sample1019a.png)


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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

ImageMagickで画像の上にタイル配置した影付き文字列を描画する

ImageMagickで画像の上にタイル配置した影付き文字列を描画するには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf.jpg ( -set option:distort:viewport 200x200+0+0 -fill white -font Tahoma -pointsize 35 -background none "label:Sample" -bordercolor none -border 10x5 -virtual-pixel tile -distort SRT "0.5 30" ) ( +clone -background black -shadow 80x2+3+3 ) -swap 1,2 -flatten sample917a.png

元画像(sf.jpg)


出力画像(sample917a.png)

Sunday, April 12, 2009

pycairoで画像を左右反転させる

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

# coding=UTF-8
import cairo

img = cairo.ImageSurface.create_from_png("sf.png")
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.translate(img.get_width(), 1.0)
ctx.scale(-1.0, 1.0)
ctx.set_source_surface(img, 0, 0)
ctx.paint()
surface.write_to_png('sample1018a.png')

元画像(sf.png)


出力画像(sample1018a.png)


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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Pycairoで画像を上下反転させる

groovyで4点グラデーションを描画する

groovyで4点グラデーションを描画するには、以下のコードを実行します。


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

w=200
h=200
gr = new GraphicsRenderer()
gr.renderToFile("sample1010a.png", w, h){
antialias 'on'
rect( x: 0, y: 0, width: w, height: h,
borderColor: no){
filters {
fourColorFill(
colorNE: 'red',
colorNW: 'yellow',
colorSE: 'green',
colorSW: 'blue')
}
}
}


出力画像(sample1010a.png)
groovyで描画した4点グラデーション

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

関連項目
groovyで図形を放射グラデーションで塗りつぶす
groovyで図形を虹色グラデーションで塗りつぶす
groovyでストロークにグラデーションをかける
groovyで図形をグラデーションで塗りつぶす

ImageMagickで画像の端の色調を変える

ImageMagickで画像の端の色調を変えるには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf.jpg -gravity southwest -region 20x200+0+0 -evaluate multiply 0.5 -modulate 100,120,210 -pointsize 16 -font "Times-New-Roman" -fill white -annotate 270x270+14+0 "ImageMagick" -region 20x200+180+0 -evaluate multiply 0.5 -modulate 100,120,210 sample942a.png

元画像(sf.jpg)


出力画像(sample942a.png)