Высокое качество миниатюры в Java - PullRequest
3 голосов
/ 23 июля 2011

Я попытался с помощью приведенного ниже кода создать миниатюру.

Я могу получить миниатюру, но ее качество отсутствует.Пожалуйста, кто-нибудь может мне помочь в создании высококачественного эскиза?Исходное изображение высокого качества.

BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setBackground(Color.WHITE);
graphics2D.setPaint(Color.WHITE); 
graphics2D.fillRect(0, 0, thumbWidth, thumbHeight);
graphics2D.setComposite(AlphaComposite.Src);

graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
graphics2D.dispose();      
File file = new File(thumbnailFile);
if (javax.imageio.ImageIO.write(thumbImage, "JPG", file))
    return file;

Ответы [ 3 ]

0 голосов
/ 21 сентября 2011

У меня была та же проблема, и я нашел эту замечательную статью с примером кода и примерами изображений в конце:

http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

0 голосов
/ 27 ноября 2015

отметьте это Я нашел лучший файл фляги здесь

public static javaxt.io.Image resizeThumbnailImage(javaxt.io.Image image, int width, int height) {

    Integer imgWidth = image.getWidth();
    Integer imgHeight = image.getHeight();
    Double imgRatio = (imgWidth.doubleValue() / imgHeight.doubleValue());
    logger.info("\n======= imgRatio " + imgRatio);
    if (imgRatio >= 2) {
        image.setWidth(width - 1);

    } else if (imgRatio < 1) {
        image.setHeight(300);

    } else {
        Double expectedHeight = (imgRatio * (height / ProjectConstant.THUMBNAIL_IMG_ASPECT_RATIO));
        image.setHeight(expectedHeight.intValue());

        if (image.getWidth() > width) {
            image.setWidth(width - 20);
        }
    }
    logger.info("=======after Processing  image Width  " + image.getWidth()+" Hight "+image.getHeight());

    return image;
}

моя постоянная

public static final double THUMBNAIL_IMG_ASPECT_RATIO = 1.4;

enter image description here enter image description here enter image description here

0 голосов
/ 23 июля 2011

Возможно, вы захотите взглянуть на это: http://download.oracle.com/javase/tutorial/uiswing/components/icon.html

http://download.oracle.com/javase/tutorial/uiswing/examples/components/IconDemoProject/src/components/IconDemoApp.java

Я использовал это как справку для того, чтобы сделать что-то подобное раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...