First of all, why don't you even consider such a basic thing as implementing the interpolation by yourself, using well-known and well described algorithms? See for example:
http://en.wikipedia.org/wiki/Bilinear_interpolation[
^],
http://en.wikipedia.org/wiki/Bicubic_interpolation[
^].
I understand, it needs time and requires some qualification, a lot of effort to test and debug it. But why not searching for the solutions using, say, Web search?
Please see:
http://docs.oracle.com/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/InterpolationBilinear.html[
^],
http://docs.oracle.com/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/InterpolationBicubic.html[
^].
Using the occasion, I also want to mention the known "overshoot" cases by bicubic algorithm which results in increased
acutance. It's interesting that 1) human vision perceives image with slight of even considered overshoot as very natural, most usually not spotting the effect; 2) it's a little known fact that the processing of information in human visual system itself produce considerable "overshoot"; so in might be one of the factors explaining previous item.
—SA