Saturday, May 31, 2008

RMagickで半透明影つきの文字列を描画する

RMagickで半透明影つきの文字列を描画するには、以下のコードを実行します。

require 'RMagick'
include Magick

# ダミーイメージを作成
img1 = Image.new(10,10)
dr = Draw.new
# フォント指定
dr.font = "Comic-Sans-MS-Bold"
# フィル色
dr.fill = "#FCE769"
# ポイントサイズ
dr.pointsize = 30
# gravity
dr.gravity = CenterGravity
# 必要サイズ取得
sz = dr.get_multiline_type_metrics(img1, "sample")
# 文字列描画用イメージ作成
img2 = Image.new(sz.width+10,sz.height+10){
self.background_color = "none"
}
dr.annotate(img2, 0, 0, 0, 0, "sample")

# 影用描画用イメージ作成
img3 = Image.new(sz.width+10,sz.height+10){
self.background_color = "#ffffff00"
}
dr.fill = "#40404090"
dr.annotate(img3, 0, 0, 3, 3, "sample")
# ぼかし
img4 = img3.blur_channel(0, 2, AllChannels);
# 重ね合わせ
img5 = img4.composite(img2, CenterGravity, 0, 0, OverCompositeOp);

img5.write("sample463a.png")

# 別の画像と重ね合わせ
img6 = ImageList.new("sf.jpg");
img7 = img6.composite(img5, NorthEastGravity, 10, 0, OverCompositeOp);
img7.write("sample463b.png")

exit

出力画像(sample463a.png)


重ね合わせ画像(sample463b.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目
RMagickをWindowsで使用するための設定
RMagickで日本語文字列を描画する

No comments: