Sunday, May 18, 2008

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で画像を丸く切り取る

JMagickで画像のコントラストを上げる

JMagickで画像のコントラストを上げるには、以下のコードを実行します。

import magick.*;

public class JMagickTest12
{
public static void main(String args[])
throws MagickException
{
/* 画像のコントラストをあげる */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
mi.contrastImage(true);
mi.contrastImage(true);
mi.contrastImage(true);
mi.setFileName("sample433a.png");
mi.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample433a.png)


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


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

JMagickで画像に色を着色する

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

import magick.*;

public class JMagickTest11
{
public static void main(String args[])
throws MagickException
{
/* 画像に指定の色を着色する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo = mi.colorizeImage("50%", new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
mo.setFileName("sample432a.png");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample432a.png)


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


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

JMagickで画像を丸く切り取る

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

import magick.*;

public class JMagickTest10
{
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("ellipse " + (w/2) + "," + (h/2) + "," + (w/2-1) + "," + (h/2-1) + ",0,360");
MagickImage mi2 = new MagickImage(ii);
mi2.drawImage(di);

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

元画像(sf.jpg)


出力画像(sample431a.png)


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


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

JMagickで画像を切り落とす

JMagickで画像を切り落とすには、以下のコードを実行します。

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

public class JMagickTest9
{
public static void main(String args[])
throws MagickException
{
/* 画像を切り落とす */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
/* 上50ピクセルを切り落とし */
Rectangle rec1 = new Rectangle(0, 50);
MagickImage mo1 = mi.chopImage(rec1);
mo1.setFileName("sample430a.jpg");
mo1.writeImage(new ImageInfo());
/* 右20ピクセル、下50ピクセルを切り落とし */
Rectangle rec2 = new Rectangle(
(int)mi.getDimension().getWidth()-20-1,
(int)mi.getDimension().getHeight()-50-1,
20,
50
);
MagickImage mo2 = mi.chopImage(rec2);
mo2.setFileName("sample430b.jpg");
mo2.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample430a.jpg)


出力画像(sample430b.jpg)


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


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

JMagickで画像を木炭画調に変換する

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

import magick.*;

public class JMagickTest8
{
public static void main(String args[])
throws MagickException
{
/* 画像を木炭画調に変換する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mo = mi.charcoalImage(1,3);
mo.setFileName("sample429a.jpg");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample429a.jpg)


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


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

Saturday, May 17, 2008

JMagickで、画像に枠をつける

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

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

public class JMagickTest7
{
public static void main(String args[])
throws MagickException
{
/* 画像に枠をつける */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
/* 枠のサイズ */
Rectangle rec = new Rectangle(20, 10);
/* 枠の色 */
mi.setBorderColor(new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
MagickImage mo = mi.borderImage(rec);
mo.setFileName("sample428a.jpg");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample428a.jpg)


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


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

JMagickで画像の上に文字列を描画する

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

import magick.*;

public class JMagickTest6
{
public static void main(String args[])
throws MagickException
{
/* 画像に文字列を描画する */
ImageInfo ii = new ImageInfo("sf.jpg");
DrawInfo di = new DrawInfo(ii);
/* フォント指定 */
di.setFont("c:\\winnt\\fonts\\msgothic.ttc");
/* ポイントサイズ指定 */
di.setPointsize(30);
/* 塗りつぶし色指定 */
di.setFill(new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
/* Gravity設定 */
di.setGravity(GravityType.NorthWestGravity);
/* 位置指定 */
di.setGeometry("+20+20");
/* テキスト設定 */
di.setText("日本語");
MagickImage mi = new MagickImage(ii);
mi.annotateImage(di);
mi.setFileName("sample427a.jpg");
mi.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample427a.jpg)


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


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

JMagickで、画像を重ね合わせる

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

import magick.*;

public class JMagickTest5
{
public static void main(String args[])
throws MagickException
{
/* 画像を重ね合わせる */
MagickImage mi1 = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mi2 = new MagickImage(new ImageInfo("sample6.jpg"));
mi1.compositeImage(CompositeOperator.SrcOverCompositeOp,mi2,20,20);
mi1.setFileName("sample426a.jpg");
mi1.writeImage(new ImageInfo());
}
}

元画像1(sf.jpg)


元画像2(sample6.jpg)


出力画像(sample426a.jpg)


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


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

JMgickで角丸四角を描画する

JMgickで角丸四角を描画するには、以下のコードを実行します。

import magick.*;

public class JMagickTest4
{
public static void main(String args[])
throws MagickException
{
/* 角丸四角を描画する */
ImageInfo ii = new ImageInfo("xc:white");
ii.setSize("200x200");
DrawInfo di = new DrawInfo(ii);
/*di.setFill(PixelPacket.queryColorDatabase("blue"));*/
di.setFill(new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
di.setPrimitive("roundrectangle 0, 0, 199, 199, 20, 20");
MagickImage mi = new MagickImage(ii);
mi.drawImage(di);
mi.setFileName("sample425a.jpg");
mi.writeImage(new ImageInfo());
}
}

出力画像(sample425a.jpg)


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


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

Jmagickで、グラデーション画像を生成する

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

import magick.*;

public class JMagickTest3
{
public static void main(String args[])
throws MagickException
{
/* グラデーション画像を作成 */
ImageInfo ii = new ImageInfo("gradient:#bbddff-#ffffff");
ii.setSize("100x100");
MagickImage mi = new MagickImage(ii);
mi.setFileName("sample424a.jpg");
mi.writeImage(new ImageInfo());
}
}

出力画像(sample423a.jpg)



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


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

JMagickで、明度・彩度・色相を変更する

JMagickで、明度・彩度・色相を変更するには、以下のコードを実行します。


import magick.*;

public class JMagickTest2
{
public static void main(String args[])
throws MagickException
{
/* 明度を70に設定 */
MagickImage mi = new MagickImage(new ImageInfo("SF.jpg"));
mi.modulateImage("70,100,100");
mi.setFileName("sample423a.jpg");
mi.writeImage(new ImageInfo());

/* 彩度を150に設定 */
MagickImage mi2 = new MagickImage(new ImageInfo("SF.jpg"));
mi2.modulateImage("100,150,100");
mi2.setFileName("sample423b.jpg");
mi2.writeImage(new ImageInfo());

/* 色相を10に設定 */
MagickImage mi3 = new MagickImage(new ImageInfo("SF.jpg"));
mi3.modulateImage("100,100,10");
mi3.setFileName("sample423c.jpg");
mi3.writeImage(new ImageInfo());
}
}


元画像(sf.jpg)


出力画像(sample423a.jpg)


出力画像(sample423b.jpg)


出力画像(sample423c.jpg)


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


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

ImageMagickをJavaから使用するための設定(JMagickインストール)

ImageMagickをJavaから使用するためには、JMagickを以下のようにインストールします。

1.以下のURLからImageMagick-6.3.9-0-Q16-windows-dll.exeとjmagick-win-6.3.9-Q16.zipをダウンロード。
http://www.jmagick.org/download.html

2.ダウンロードしたImageMagick-6.3.9-0-Q16-windows-dll.exeをインストール。

3.ダウンロードしたjmagick-win-6.3.9-Q16.zipを解凍してjmagick.dllとjmagick.jarを[JAVA_HOME]\jre\lib\extにコピー

以下のコードをコンパイル・実行することで画像をぼかすことができます。

import magick.*;

public class JmagickTest1
{
public static void main(String args[])
throws MagickException
{
MagickImage mi = new MagickImage(new ImageInfo("SF.jpg"));
MagickImage mo = mi.blurImage(0, 5);
mo.setFileName("sample422.jpg");
mo.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample422.jpg)


環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16
関連情報
JMagickまとめ

ImageMagickで、透過PNGの切り抜き画像からシールっぽい画像を生成する

透過PNGの切り抜き画像からシールっぽい画像を生成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.1-Q16
%im%\convert.exe -size 120x120 xc:black sample2.png -gravity center -composite -threshold 20%% -blur 0x10 sample421a.png
%im%\convert.exe sample421a.png -threshold 18%% -transparent black -fill #a0a0a0 -opaque white ( sample421a.png -threshold 21%% -fill #ffffe0 -opaque white -transparent black ) -composite sample2.png -gravity center -composite sample421b.png
%im%\convert.exe -size 120x120 xc:#f1ede1 sample421b.png ( +clone -background #000000 -shadow 70x2+3+3 ) -swap 1,2 -mosaic sample421c.png

上記のバッチファイルでは、以下の処理を実行しています。
1. 元画像の透過PNGにちょっと大き目の黒背景を重ね合わせて2値化し(-threshold 20%%)、ぼかし(-blur 0x10)をかけます。

元画像(sample2.png:100x100ピクセル)


出力画像(sample421a.png)


2.処理1の出力画像(sample421a.png)を閾値18%で二値化し、白色部分は#a0a0a0に塗り替え、黒色部分は透明にします。これで、縁取りの部分の領域を作成します。次に、処理1の出力画像を今度は閾値21%で二値化し、白色部分を#ffffe0に、黒色部分は透明にします。元画像を読み込んで、画像を重ね合わせると、以下の画像になります。

出力画像(sample421b.png)


3.最後に、背景画像(#f1ede1)と、影、処理2の出力画像(sample421b.png)を重ね合わせると、以下の画像になります。

出力画像(sample421c.png)


関連項目
ImageMagickで、透過PNG画像に半透明の縁取りをつける