rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.3-Q16
%im%\convert.exe sf.jpg -colorspace gray -colors 4 sample616a.png
元画像(sf.jpg)
出力画像(sample616a.png)

関連項目
ImageMagickで画像を減色する
ImageMagickとPHPで画像を4色グレースケールに変換する (Imagickでの同様の処理)

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest42
{
public static void main(String args[])
throws Exception
{
/* 立体的な文字を描画する */
BufferedImage img = new BufferedImage(
200, 70, BufferedImage.TYPE_INT_ARGB_PRE
);
Graphics2D gr = img.createGraphics();
gr.setColor(new Color(0xff, 0xff, 0xff, 0xff));
gr.setFont(new Font("Tahoma", Font.BOLD, 50));
gr.drawString("Sample", 5, 50);
gr.dispose();
ChromeFilter cf = new ChromeFilter();
/* effect量 */
cf.setAmount(0.3f);
/* 露光量 */
cf.setExposure(1.0f);
BufferedImage img2 = cf.filter(img, null);
BufferedImage img3 = new BufferedImage(
200, 70, BufferedImage.TYPE_INT_RGB
);
Graphics2D gr2 = img3.createGraphics();
gr2.drawImage(img2,0,0,null);
gr2.dispose();
ImageIO.write(img3, "jpg", new File("sample573a.jpg"));
}
}



import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest41
{
public static void main(String args[])
throws Exception
{
/* 市松模様を描画する */
BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);
CheckFilter cf = new CheckFilter();
/* 前景色 */
cf.setForeground(0xffffffff);
/* 背景色 */
cf.setBackground(0xff000000);
/* xサイズ */
cf.setXScale(16);
/* yサイズ */
cf.setYScale(16);
/* あいまいさ */
cf.setFuzziness(20);
/* 角度 */
cf.setAngle(45f/180f*ImageMath.PI);
BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample572a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest40
{
public static void main(String args[])
throws Exception
{
/* レンズフレアを描画する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
FlareFilter ff = new FlareFilter();
/* 描画色 */
ff.setColor(0xffffffff);
/* 輪の太さ */
ff.setRingWidth(1.2f);
/* ベースのeffect量 */
ff.setBaseAmount(0.9f);
/* 輪のeffect量 */
ff.setRingAmount(0.2f);
/* 光線の量 */
ff.setRayAmount(1.4f);
/* 中心 */
ff.setCentre(new Point2D.Float(0.7f, 0.3f));
/* 半径 */
ff.setRadius(70f);
BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample571a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest39
{
public static void main(String args[])
throws Exception
{
/* 画像を球状に変換する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
PolarFilter sf = new PolarFilter(PolarFilter.RECT_TO_POLAR);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample570a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest38
{
public static void main(String args[])
throws Exception
{
/* 画像を傾ける */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
ShearFilter sf = new ShearFilter();
/* 画像のリサイズをおこなうか */
sf.setResize(true);
/* x角度 */
sf.setXAngle(45f/180f*ImageMath.PI);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample569a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest37
{
public static void main(String args[])
throws Exception
{
/* 等高線をつける */
BufferedImage img = ImageIO.read(new File("sample3b.jpg"));
ContourFilter cf = new ContourFilter();
/* レベル */
cf.setLevels(10);
/* スケール */
cf.setScale(2f);
/* オフセット */
cf.setOffset(0f);
BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample568a.jpg"));
}
}


import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest36
{
public static void main(String args[])
throws Exception
{
/* 画像に折り目をつける */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
CurlFilter cf = new CurlFilter();
cf.setTransition(0.10f);
cf.setAngle(210f/180f*ImageMath.PI);
cf.setRadius(4f);
BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample567a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest35
{
public static void main(String args[])
throws Exception
{
/* 水面背景 */
BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);
CausticsFilter cf = new CausticsFilter();
/* スケール */
cf.setScale(32f);
/* 明るさ */
cf.setBrightness(15);
/* 乱れ */
cf.setTurbulence(0.9f);
/* effect量 */
cf.setAmount(1.1f);
/* 拡散 */
cf.setDispersion(1f);
/* 時間 */
cf.setTime(0.1f);
/* サンプル */
cf.setSamples(10);
BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample566a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest34
{
public static void main(String args[])
throws Exception
{
/* 水面下のようなeffectをかける */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
SwimFilter sf = new SwimFilter();
/* swimの量 */
sf.setAmount(10f);
/* スケール */
sf.setScale(32f);
/* 引き伸ばし */
sf.setStretch(10f);
/* アングル */
sf.setAngle(10f/180f*ImageMath.PI);
/* 乱れ */
sf.setTurbulence(1f);
/* 時間 */
sf.setTime(0.1f);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample565a.jpg"));
}
}




import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest33
{
public static void main(String args[])
throws Exception
{
/* メタル風の画像を生成する */
BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);
BrushedMetalFilter bmf = new BrushedMetalFilter(
0xffb0b0b4, /* 金属の色 */
20, /* 水平方向ぼかしのサイズ */
0.15f, /* ノイズの量 */
false, /* モノクロームの場合true */
0.1f /* 輝きの量 */
);
BufferedImage img2 = bmf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample563a.jpg"));
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest32
{
public static void main(String args[])
throws Exception
{
/* 画像を回転させる */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
RotateFilter rf = new RotateFilter(45f/180f*ImageMath.PI, true);
BufferedImage img2 = rf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample562a.jpg"));
}
}


import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest31
{
public static void main(String args[])
throws Exception
{
/* エッジ抽出処理 */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
EdgeFilter ef = new EdgeFilter();
BufferedImage img2 = ef.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample561a.jpg"));
}
}



import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest30
{
public static void main(String args[])
throws Exception
{
/* 左右反転・上下反転処理 */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
FlipFilter ff = new FlipFilter();
/* 左右反転 */
ff.setOperation(FlipFilter.FLIP_H);
BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample559a.jpg"));
BufferedImage img3 = ImageIO.read(new File("sf.jpg"));
FlipFilter ff2 = new FlipFilter();
/* 上下反転 */
ff2.setOperation(FlipFilter.FLIP_V);
BufferedImage img4 = ff2.filter(img3, null);
ImageIO.write(img4, "jpg", new File("sample559b.jpg"));
}
}


import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest29
{
public static void main(String args[])
throws Exception
{
/* 球面処理 */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
SphereFilter sf = new SphereFilter();
/* 屈折率 */
sf.setRefractionIndex(1.9f);
/* 半径 */
sf.setRadius(80);
/* 中心 */
sf.setCentreX(0.6f);
sf.setCentreY(0.6f);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample558a.jpg"));
}
}
