Aquí está la imagen original: http://rank.my/public/images/uploaded/orig-4193395691714613396.png¿Por qué esta imagen se ve tan mal después de ser reducida en Java?
Y aquí es reducido a 300x225:
http://rank.my/public/images/uploaded/norm-4193395691714613396.png
Y aquí es reducido a 150x112:
http://rank.my/public/images/uploaded/small-4193395691714613396.png
Como se puede ver, 300x225 se ve bastante mal, y 150x112 se ve horrible. Aquí está el código que estoy usando para reducir la imagen:
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;
}
¿Qué estoy haciendo mal aquí? La escala de la imagen no tiene que ser especialmente rápida, la calidad es definitivamente una prioridad sobre la velocidad. ¿Estoy usando la técnica incorrecta?
@MusiGenesis: Creo que su respuesta eliminado es excelente, y me gustaría que deshacer el borrado . –
Los enlaces están muertos, host con imgur o similar :) – alex
Los enlaces están de vuelta ahora - lo siento – sanity