Как изменить масштаб и сохранить BufferedImage - PullRequest
0 голосов
/ 29 марта 2012

Я получил BufferedImage и хочу изменить его масштаб перед сохранением в формате jpg / png.

Я получил следующий код:

private BufferedImage rescaleTo(BufferedImage img,int minWidth,int minHeight) {
    BufferedImage buf = toBufferedImage(img.getScaledInstance(minWidth, minHeight, Image.SCALE_DEFAULT));
    BufferedImage ret = new BufferedImage(buf.getWidth(null),buf.getHeight(null),BufferedImage.TYPE_INT_ARGB);
    return ret;
}

public BufferedImage toBufferedImage(Image img) {
    BufferedImage ret = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = ret.createGraphics();
    g2.drawImage(img,0,0,null);
    return ret;
}

public String saveTo(BufferedImage image,String URI) throws UtilityException {
    try {
        if(image == null)
            System.out.println("dododod");
        ImageIO.write(image, _type, new File(URI));
    } catch (IOException e) {
        throw new UtilityException(e.getLocalizedMessage());
    }
    return URI;
}

Но в результате я просто получаючерная картинка.Это должно быть связано с изменением масштаба, так как когда я пропускаю его, я могу сохранить ожидаемое изображение.

1 Ответ

0 голосов
/ 30 марта 2012

В качестве теста установите _type = "png", а также используйте расширение файла .png при вызове ImageIO.write (image, _type, new File (URI)) ;. У меня были проблемы, как вы описали, и я начал писать тип PNG, и все работает отлично. К сожалению, я никогда не возвращался к отладке, почему я не мог написать тип JPG, GIF и т. Д.

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