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"));
}
}