javaで標準で使える画像のアフィン変換(補填)アルゴリズムは、 nearest-neighbour、bilinear、bicubicで、左から順に画質が基本的に向上し、そのかわり計算コストが高くなります。
下記ソースは
http://www.java-tips.org/java-se-tips/javax.imageio/java-2d-api-enhancements-in-j2se-5.0.html
からもらってきたもので、いらんとこを消してあります。
一番画質の良いbicubicを使っています。
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.*;
import javax.imageio.*;
public class Bicubic {
public static void main(String args[]) throws IOException {
if (args.length == 0) {
System.err.println(
"Provide image name on command line");
System.exit(-1);
}
Image image = ImageIO.read(new File(args[0]));
int w = image.getWidth(null);
int h = image.getHeight(null);
BufferedImage bicubic = new BufferedImage(2*w, 2*h,
BufferedImage.TYPE_INT_RGB);
bg = bicubic.createGraphics();
bg.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
bg.scale(2, 2);
bg.drawImage(image, 0, 0, null);
bg.dispose();
}