Вот оригинальное изображение: http://rank.my/public/images/uploaded/orig-4193395691714613396.pngПочему это изображение выглядит так плохо после сокращения на Java?
И вот он масштабируется до 300x225:
http://rank.my/public/images/uploaded/norm-4193395691714613396.png
И вот он масштабируется до 150x112:
http://rank.my/public/images/uploaded/small-4193395691714613396.png
Как вы можете видеть, 300x225 выглядит довольно плохо, а 150x112 выглядит ужасно. Вот код, который я использую для уменьшения изображения:
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;
}
Что я здесь делаю неправильно? Масштабирование изображения не должно быть особенно быстрым, качество, безусловно, является приоритетом по скорости. Я использую неправильную технику?
@MusiGenesis: Я думаю, что ваш ответ удален отличный, и я хочу, чтобы ты его восстановить , –
Ссылки мертвы, пожалуйста, принимайте imgur или аналогичные :) – alex
Ссылки сейчас резервные копии - извините – sanity