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で、画像を端がちぎられたようなスケッチ調の画像に変換する

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で図形をグラデーションで塗りつぶす