2011-01-18 15 views
0

imageIOを使用してgifをjpegに変換しようとしていますが、結果の画像はピンク色です...誰でも手助けできますか?ImageIO:gif to 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(); 
} 
+0

関連項目:http://stackoverflow.com/questions/4386446/problem-using-imageio-write-jpg-file – finnw

答えて

2

多分、ピンクはgif画像の透過色として定義されます。その場合は、次の例が有効です。基本的には、新しいイメージが作成され、「backgound色が」明示的に渡されているものに設定されている。

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(); 
} 

thisが関係している可能性があるように見えます。

関連する問題