Pæn nedskalering af raster-billede
Jeg har et billede som Image-objekt, og skal bruge billedet som BufferedImage-objekt, skaleret til en anden størrelse.Hvis jeg gjorde det med et grafik-program, ville jeg vælge "bilinear interpolation" for at få den effekt jeg ønsker, uanset jeg der skaleres op eller ned.
Det virker også fint når der skaleres op, men når der skaleres ned fås effekten "nearest neighbor", dvs. pixels smides væk, uden at flytte indholdet til andre pixels.
Koden jeg bruger nu er:
Image image1;
BufferedImage image2;
int width, height; // Ønsket størrelse på image2
[...]
Graphics2D graphics2D = image2.createGraphics();
graphics2D.setRenderingHint(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image1, 0, 0, width, height, null);
Jeg har prøvet at sætte KEY_ANTIALIASING til VALUE_ANTIALIAS_ON, men uden synlig effekt.
Hvordan opnår jeg en pæn nedskalering, hvor der ikke bare bliver smidt pixels væk?
(Jeg bruger Sun's j2se 1.5)
