Ecco l'immagine originale: http://rank.my/public/images/uploaded/orig-4193395691714613396.pngPerché questa immagine appare così male dopo essere stata ridimensionata in Java?
E qui si è ridimensionato a 300x225:
http://rank.my/public/images/uploaded/norm-4193395691714613396.png
E qui si è ridimensionato a 150x112:
http://rank.my/public/images/uploaded/small-4193395691714613396.png
Come puoi vedere, 300x225 sembra piuttosto male e 150x112 sembra orribile. Ecco il codice che sto usando per ridimensionare l'immagine:
private static BufferedImage createResizedCopy(final BufferedImage source, final int destWidth,
final int destHeight) {
final BufferedImage resized = new BufferedImage(destWidth, destHeight, source.getType());
final Graphics2D bg = resized.createGraphics();
bg.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
bg.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
final float sx = (float) destWidth/source.getWidth();
final float sy = (float) destHeight/source.getHeight();
bg.scale(sx, sy);
bg.drawImage(source, 0, 0, null);
bg.dispose();
return resized;
}
Cosa sto facendo di sbagliato qui? Il ridimensionamento delle immagini non deve essere particolarmente veloce, la qualità è sicuramente una priorità rispetto alla velocità. Sto usando la tecnica sbagliata?
@MusiGenesis: Penso che la tua risposta eliminato è eccellente, e vorrei che ci si Undelete It . –
I collegamenti sono morti, si prega di ospitare con imgur o simili :) – alex
I collegamenti sono di nuovo disponibili - mi spiace – sanity