Java 图像IO:gif到jpeg问题->;图像变成粉红色

Java 图像IO:gif到jpeg问题->;图像变成粉红色,java,gif,javax.imageio,Java,Gif,Javax.imageio,我正在尝试使用imageIO将gif转换为jpeg,但生成的图像是粉红色的。。。有人能帮忙吗 public byte[] convert(byte[] bytes) throws Exception { ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); BufferedImage bufferedImage = ImageIO.read(inputStream); ByteArrayO

我正在尝试使用imageIO将gif转换为jpeg,但生成的图像是粉红色的。。。有人能帮忙吗

public byte[] convert(byte[] bytes)
throws Exception {
    ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
    BufferedImage bufferedImage = ImageIO.read(inputStream); 
    ByteArrayOutputStream osByteArray = new ByteArrayOutputStream();
    ImageOutputStream outputStream = ImageIO.createImageOutputStream(osByteArray);
    ImageIO.write(bufferedImage, "jpg", outputStream);
    outputStream.flush();
    outputStream.close();
    return osByteArray.toByteArray();
}

也许,粉红色被定义为gif图像的透明度颜色。如果是这样,下面的示例可能会起作用。基本上,创建一个新图像,“背景颜色”被显式设置为传入的任何颜色

public static byte[] convert(byte[] bytes, Color backgroundColor) throws Exception
{
    ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
    BufferedImage bufferedImage = ImageIO.read(inputStream);
    BufferedImage newBi = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = (Graphics2D) newBi.getGraphics();
    g2d.drawImage(bufferedImage, 0, 0, bufferedImage.getWidth(), bufferedImage.getHeight(), backgroundColor, null);
    bufferedImage.getHeight(), null);
    ByteArrayOutputStream osByteArray = new ByteArrayOutputStream();
    ImageOutputStream outputStream = ImageIO.createImageOutputStream(osByteArray);
    ImageIO.write(newBi, "jpg", outputStream);
    outputStream.flush();
    outputStream.close();
    return osByteArray.toByteArray();
}
看起来可能有关联。

也有关联: