Ошибка Java PNG в JPG - PullRequest
       53

Ошибка Java PNG в JPG

1 голос
/ 04 марта 2012

Я пытаюсь преобразовать изображение PNG в изображение JPEG, следуя этому руководству.Но я столкнулся с проблемой.Полученное изображение имеет розовый слой.

У кого-нибудь есть решение этой проблемы?Или какой код использовать для преобразования изображения в нужный формат?

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 04 марта 2012

Какой цветовой режим вы используете?При создании буферизованного объекта изображения попробуйте добавить тип, подобный этому.

    File newFile = new File(path + fileName + "." + Strings.FILE_TYPE);

    Image image = null;
    try {
        image = ImageIO.read(url); // I was using an image from web
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    image = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    try {
        BufferedImage img = toBufferedImage(image);
        ImageIO.write(img, "jpg", newFile);
    } catch (IOException e) {
        e.printStackTrace();
    }



}

private static BufferedImage toBufferedImage(Image src) {
    int w = src.getWidth(null);
    int h = src.getHeight(null);
    int type = BufferedImage.TYPE_INT_RGB; // other options
    BufferedImage dest = new BufferedImage(w, h, type);
    Graphics2D g2 = dest.createGraphics();
    g2.drawImage(src, 0, 0, null);
    g2.dispose();
    return dest;
}
4 голосов
/ 04 марта 2012
  1. Создайте BufferedImage желаемого размера, например ::

    BufferedImage img = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)

  2. залейте его соответствующим цветом фона:

    img.getGraphics().fillRect(....)

  3. Вызовите drawImage на графике изображения поверх этого фона:

    img.getGraphics().drawImage(image, 0, 0, null);

затем запишите свое изображение в формате JPG, как обычно.

...