Thursday, May 22, 2008

JMagickでビルトインパターンの画像を生成する

JMagickでビルトインパターンの画像を生成するには以下のコードを実行します。

import magick.*;

public class JMagickTest28
{
public static void main(String args[])
throws MagickException
{
/* ビルトインパターンで画像を作成する */
ImageInfo ii = new ImageInfo("pattern:checkerboard");
ii.setSize("200x100");
MagickImage mi = new MagickImage(ii);
mi.setFileName("sample448a.png");
mi.writeImage(new ImageInfo());
}
}

出力画像(sample448a.png)


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



関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にする

Wednesday, May 21, 2008

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>sample394</title>
</head>
<body>
<?php
/* 画面上部に10ピクセルの余白を追加 */
$im = new Imagick('sf.jpg');
$im->setImageBackgroundColor('#e2ddd4');
$im->spliceImage(0, 10, 0, 0);
$im->writeImage('sample394a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
/* 画面右側に10ピクセルの余白を追加 */
$im = new Imagick('sf.jpg');
$im->setImageBackgroundColor('#e2ddd4');
$im->spliceImage(10, 0, $im->getImageWidth(), 0);
$im->writeImage('sample394b.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample394a.jpg" />
<img src="sample394b.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample394a.jpg)


出力画像(sample394b.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)
ImageMagickとPHPで、画像からはみ出した影付き文字列を描画する

JMagickで画像を角丸四角に切り取る

JMagickで画像を角丸四角に切り取るには、以下のコードを実行します。

import magick.*;

public class JMagickTest27
{
public static void main(String args[])
throws MagickException
{
/* 画像を角丸四角で切り取る */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
int w = (int)mi.getDimension().getWidth();
int h = (int)mi.getDimension().getHeight();

ImageInfo ii = new ImageInfo("xc:none");
ii.setSize(w + "x" + h);
DrawInfo di = new DrawInfo(ii);
di.setFill(PixelPacket.queryColorDatabase("white"));
di.setPrimitive("roundrectangle 0,0," +
(w-1) + "," + (h-1) + ",20,20");
MagickImage mi2 = new MagickImage(ii);
mi2.drawImage(di);

mi2.compositeImage(CompositeOperator.SrcInCompositeOp,mi,0,0);
mi2.setFileName("sample447a.png");
mi2.writeImage(new ImageInfo());
}
}

出力画像(sf.jpg)


出力画像(sample447a.png)



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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで画像を丸く切り取る

JMagickで画像を半透明にして重ね合わせる

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

import magick.*;

public class JMagickTest26
{
public static void main(String args[])
throws MagickException
{
/* 画像を半透明にする */
MagickImage mi = new MagickImage(new ImageInfo("sample6.jpg"));
/* 半透明のイメージを作成 */
ImageInfo ii = new ImageInfo("xc:#00000080");
ii.setSize(mi.getDimension().getWidth() + "x" + mi.getDimension().getHeight());
MagickImage mi2 = new MagickImage(ii);
/* Opacityをcopy */
mi.compositeImage(CompositeOperator.CopyOpacityCompositeOp,mi2, 0, 0);

/* 半透明になった画像を重ね合わせ */
MagickImage mi3 = new MagickImage(new ImageInfo("sf.jpg"));
mi3.compositeImage(CompositeOperator.SrcOverCompositeOp,mi,50,50);
mi3.setFileName("sample446a.jpg");
mi3.writeImage(new ImageInfo());
}
}

元画像(sample6.jpg)


元画像(sf.jpg)


出力画像(sample446a.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで、画像を重ね合わせる

Tuesday, May 20, 2008

JMagickでメディアンフィルタを適用する

JMagickでメディアンフィルタを適用するには、以下のコードを実行します。

import magick.*;

public class JMagickTest25
{
public static void main(String args[])
throws MagickException
{
/* 画像にメディアンフィルタを適用する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo = mi.medianFilterImage(3);
mo.setFileName("sample445a.jpg");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample445a.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像を2値化する

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

import magick.*;

public class JMagickTest24
{
public static void main(String args[])
throws MagickException
{
/* 画像を2値化する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
mi.thresholdImage(40000);
mi.setFileName("sample444a.jpg");
mi.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample444a.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にする

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>sample393</title>
</head>
<body>
<?php
/* プラズマフラクタル画像 */
$im = new Imagick();
$im->newPseudoImage(200, 200, 'plasma:fractal');
$im->writeImage('sample393a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample393a.jpg" />

</body>
</html>

出力画像(sample393a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)

Monday, May 19, 2008

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>sample392</title>
</head>
<body>
<?php
/* ビデオ風の横線 */
$im = new Imagick('sf.jpg');
$im2=$im->fxImage('j%2==0?p:p*0.5');
$im2->writeImage('sample392a.jpg');
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample392a.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample392a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)
ImageMagickとPHPで画像をビデオ風にする - その2 (fxImageを使用しないで同様の処理)

Sunday, May 18, 2008

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>sample391</title>
</head>
<body>
<?php
/* クレヨン風の文字列描画 */
$im = new Imagick();
$im->newImage(120, 40, 'white');
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* 塗りつぶし色設定 */
$idraw->setFillColor('#f6b739');
/* ストローク色設定 */
$idraw->setStrokeColor('#fad759');
$idraw->annotation(2, 30, 'Sample');
$im->drawImage($idraw);

$im->spreadImage(1);
$im->writeImage('sample391a.jpg');
/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample391a.jpg" />

</body>
</html>

出力画像(sample391a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)
ImageMagickでクレヨン風の文字列を描画する (Convertコマンド)
ImageMagickとPHPで画像の端をかすれたように処理する

JMagickで画像を波型に揺らす

JMagickで画像を波型に揺らすには以下のコードを実行します。

import magick.*;

public class JMagickTest23
{
public static void main(String args[])
throws MagickException
{
/* 画像を波型に揺らす */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo = mi.waveImage(5, 50);
mo.setFileName("sample443a.jpg");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample443a.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像をかたむける

JMagickで画像を傾けるには、以下のコードを実行します。

import magick.*;

public class JMagickTest22
{
public static void main(String args[])
throws MagickException
{
/* 画像をshearImageを使用して傾ける */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo1 = mi.shearImage(10, 0);
mo1.setFileName("sample442a.jpg");
mo1.writeImage(new ImageInfo());
/* 余白の色 */
mi.setBackgroundColor(new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
MagickImage mo2 = mi.shearImage(0, 20);
mo2.setFileName("sample442b.jpg");
mo2.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample442a.jpg)


出力画像(sample442b.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像のqualityを指定して保存する

Jmagickで画像のqualityを指定して保存するには、以下のコードを実行します。

import magick.*;

public class JMagickTest21
{
public static void main(String args[])
throws MagickException
{
/* 画像のqualityを指定 */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
mi.setFileName("sample442a.jpg");
ImageInfo ii2 = new ImageInfo();
ii2.setQuality(10);
mi.writeImage(ii2);
}
}

元画像(sf.jpg)


出力画像(sample442.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像の大きさを変更する

JMagickで画像の大きさを変更するには、以下のコードを実行します。

import magick.*;

public class JMagickTest20
{
public static void main(String args[])
throws MagickException
{
/* 画像の大きさ変更 */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
/* 200x100にリサイズ */
MagickImage mo1 = mi.scaleImage(200,100);
mo1.setFileName("sample441a.png");
mo1.writeImage(new ImageInfo());
/* 250x250にリサイズ */
MagickImage mo2 = mi.scaleImage(250,250);
mo2.setFileName("sample441b.png");
mo2.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像1(sample441a.png)


出力画像2(sample441b.png)


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



関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像を回転させる

JMagickで画像を回転させるには、以下のコードを実行します。

import magick.*;

public class JMagickTest19
{
public static void main(String args[])
throws MagickException
{
/* 画像を回転させる */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
/* 回転後に生じる余白の色 */
mi.setBackgroundColor(new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
MagickImage mo = mi.rotateImage(10);
mo.setFileName("sample440a.png");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample440a.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像を上下・左右にスクロールさせる

JMagickで画像を上下・左右にスクロールさせるには、以下のコードを実行します。

import magick.*;

public class JMagickTest18
{
public static void main(String args[])
throws MagickException
{
/* 画像を上下・左右にスクロールさせる */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
/* 右に50ピクセルスクロール */
MagickImage mo1 = mi.rollImage(50,0);
mo1.setFileName("sample439a.png");
mo1.writeImage(new ImageInfo());
/* 下に100ピクセルスクロール */
MagickImage mo2 = mi.rollImage(0,100);
mo2.setFileName("sample439b.png");
mo2.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample439a.png)


出力画像(sample439b.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

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

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

import magick.*;

public class JMagickTest17
{
public static void main(String args[])
throws MagickException
{
/* 画像をグレースケールにする */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
QuantizeInfo qi = new QuantizeInfo();
qi.setColorspace(ColorspaceType.GRAYColorspace);
mi.quantizeImage(qi);
mi.setFileName("sample438a.png");
mi.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample438a.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像を油絵調に変換する

JMagickで画像を油絵調に変換するには、以下のコードを実行します。

import magick.*;

public class JMagickTest16
{
public static void main(String args[])
throws MagickException
{
/* 画像を油絵調に変換する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo = mi.oilPaintImage(3);
mo.setFileName("sample437a.png");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample437a.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像の上下反転、左右反転をする

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

import magick.*;

public class JMagickTest15
{
public static void main(String args[])
throws MagickException
{
/* 画像を上下反転・左右反転する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo1 = mi.flipImage();
mo1.setFileName("sample436a.png");
mo1.writeImage(new ImageInfo());
MagickImage mo2 = mi.flopImage();
mo2.setFileName("sample436b.png");
mo2.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample436a.png)


出力画像(sample436b.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで、画像のエッジ抽出をする

JMagickで画像のエッジ抽出をするには、以下のコードを実行します。

import magick.*;

public class JMagickTest14
{
public static void main(String args[])
throws MagickException
{
/* 画像のエッジ抽出をする */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo = mi.edgeImage(1);
mo.setFileName("sample435a.png");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample435a.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)

JMagickで画像の一部を四角に切り取る

JMagickで画像の一部を四角に切り取るには、以下のコードを実行します。

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

public class JMagickTest13
{
public static void main(String args[])
throws MagickException
{
/* 画像の一部を切り取る */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
Rectangle rec = new Rectangle(100, 100, 90, 100);
MagickImage mo = mi.cropImage(rec);
mo.setFileName("sample434a.png");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample434a.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで画像を丸く切り取る