Saturday, December 20, 2008

ImageMagickで白と透明色の市松模様の文字列を描画する

ImageMagickで白と透明色の市松模様の文字列を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16
rem 白と透明色の市松模様の文字列画像を生成
%im%\convert.exe -size 300x80 xc:none -stroke none -tile pattern:GRAY50 -font Comic-Sans-MS-Bold -gravity center +antialias -draw "font-size 40 text 0,0 'ImageMagick'" -transparent black sample728a.png
rem 元画像と生成した文字列画像を重ね合わせ
%im%\convert.exe sf2.jpg sample728a.png -composite sample728b.png

上記バッチファイルではGRAY50パターン(白黒の市松模様)をantialiasなしで
文字列を描画した後、黒色部分を透明色に変えて(-transparent black)います。
その後に、元画像と重ね合わせをしています。

元画像(sf2.jpg)


出力画像(sample728b.png)

Java2Dで画像の上に垂直に傾けた文字列を描画する

Java2Dで画像の上に垂直に傾けた文字列を描画するには、以下のコードを実行します。


import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;

public class Java2DTest19
{
public static void main(String args[])
throws Exception
{
/* 文字列を縦に傾けて画像上に描画する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
Graphics2D gr = img.createGraphics();
/* 半透明色で四角を描画 */
gr.setColor(new Color(0x00, 0x00, 0x00, 0x70));
gr.fill(new Rectangle2D.Double(0,0,20,200));

/* 回転させた文字列を描画 */
gr.setColor(new Color(0xff, 0xff, 0xff));
gr.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 14));
gr.rotate(270/180.0*Math.PI, 100, 100);
gr.drawString("San Francisco", 2, 15);
gr.dispose();

ImageIO.write(img, "jpg", new File("sample727a.jpg"));
}
}


元画像(sf.jpg)


出力画像(sample727a.jpg)


関連項目
Java2Dで画像の上に半透明のぼやけた文字列を描画する
Java2Dで文字列をテクスチャ画像で塗りつぶす

Friday, December 19, 2008

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

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


import java.awt.*;
import magick.*;

public class JMagickTest43
{
public static void main(String args[])
throws MagickException
{
/* プラズマフラクタル画像を生成する */
ImageInfo ii = new ImageInfo("plasma:fractal");
ii.setSize("150x150");
MagickImage mi = new MagickImage(ii);
mi.setFileName("sample724a.jpg");
mi.writeImage(new ImageInfo());
}
}


出力画像(sample724a.jpg)


環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16

関連情報
JMagickまとめ

Thursday, December 18, 2008

RMagickでマスクした部分を白黒にする

RMagickでマスクした部分を白黒にするには、以下のコードを実行します。

require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images2 = ImageList.new("mask.bmp")
# 白黒マスクから透過反転マスクを作成
images2.alpha = ActivateAlphaChannel
img = images2.fx("1-r", Magick::AlphaChannel)

# マスク画像で切り取り
img3 = img.composite(images[0], 0, 0, SrcInCompositeOp)
# グレースケール画像に変換
images[0].colorspace = ColorspaceType::GRAYColorspace
# 切り取った画像とグレースケール画像を重ね合わせ
img4 = images[0].composite(img3, CenterGravity, 0, 0, OverCompositeOp)
img4.write("sample716a.png")

exit

元画像(sf.jpg)


マスク画像(mask.bmp)


出力画像(sample716a.png)


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

関連項目
ImageMagickで、マスクした部分を白黒に変換する (Convertコマンドで同様の処理)

Wednesday, December 17, 2008

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>sample715(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 文字列の影に横線を入れる */
$im = new Imagick();
$im->newImage(200, 50, 'none');
$im->setImageMatte(true);

$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#707070');
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw, 0, 0, 0, "ImageMagick");

/* 影つけ */
$im2=$im->clone();
$im2->setImageBackgroundColor('black');
$im2->shadowImage(70,3,5,5);

/* 1ラインごとに透明に */
$it = $im2->getPixelIterator();
foreach($it as $py => $line){
if($py%2 == 0 ){
foreach($line as $px => $pixel){
$pixel->setColorValue(Imagick::COLOR_ALPHA, 0);
}
}
$it->syncIterator();
}

/* 白背景と重ね合わせて保存 */
$im3 = new Imagick();
$im3->newImage($im->getImageWidth(), $im->getImageHeight(), "white");
$im3->addImage($im);
$im3->addImage($im2);
$im4=$im3->mosaicImages();

$im4->writeImage('sample715a.png');

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

</body>
</html>


出力画像(sample715a.png)


関連項目
ImageMagickで、文字列の影に横線をいれる (Convertコマンドによる同様の処理)
ImageMagickとPHPで透過PNGに影付けして、影にモーションブラーをかける

Tuesday, December 16, 2008

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>sample714(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像をグレースケールにする */
$im = new Imagick("sf.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
$im->writeImage('sample714a.png');

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample714a.png)


関連項目
ImageMagickとPHPで指定された点を中心として徐々に画像を白黒化させる
ImageMagickとPHPで青っぽいところ以外を白黒にする
ImageMagickとPHPで画像上に描画した文字列以外の部分をグレースケールにする
ImageMagickとPHPで、画像の緑っぽい所以外は白黒にする

Monday, December 15, 2008

JMagickで画像をタイル配置する

JMagickで画像をタイル配置するには、以下のコードを実行します。

import java.awt.*;
import magick.*;

public class JMagickTest42
{
public static void main(String args[])
throws MagickException
{
/* 画像をタイル配置する */
ImageInfo ii = new ImageInfo("tile:flower1.png");
ii.setSize("200x200");
MagickImage mi = new MagickImage(ii);
mi.setFileName("sample713a.jpg");
mi.writeImage(new ImageInfo());
}
}

元画像(flower1.png)


出力画像(sample713a.jpg)


関連情報
JMagickまとめ

Sunday, December 14, 2008

ImageMagickで画像に立体的な角丸四角の枠をつける

ImageMagickで画像に立体的な角丸四角の枠をつけるには、以下のコードを実行します。

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

%im%\convert.exe -size 200x200 xc:none -stroke white -strokewidth 8 -fill none -draw "roundrectangle 10,10,190,190,10,10" ( +clone -blur 0x3 -shade 135x23 ) -compose hard-light -composite ( -size 200x200 xc:none -stroke white -strokewidth 8 -fill white -draw "roundrectangle 10,10,190,190,10,10" -matte -channel rgba sf.jpg -compose src_in -composite ) -swap 0,1 -compose src-over -composite sample712a.png

元画像(sf.jpg)


出力画像(sample712a.png)


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