2012-03-04 20 views
0

thisチュートリアルの後にPNG画像をJPEG画像に変換しようとしています。しかし、私は問題に遭遇します。結果として得られる画像にはピンクのレイヤーがあります。Java PNG to JPG Bug

誰にもこの問題の解決策がありますか?または、画像を希望の形式に変換するためにどのコードを使用する必要がありますか?

ありがとうございます!

+0

これは、コードスニペットのようなチュートリアルではありません。問題の画像をアップロードできますか?バイトの大きさはどれくらいですか? –

+0

サンプル画像です:http://imageshack.us/photo/my-images/19/samplepngimage.png/ –

答えて

3
  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としてあなたのイメージを書き留めます。

+0

ありがとう! fillRectはジョブを完了しました。 –

+0

選択したColorおよびnull ImageObserverを使用してgraphics.drawImageも参照してください。http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html#drawImage-java.awt.Image-int -int-java.awt.Color-java.awt.image.ImageObserver- – m4rtin

3

どのカラーモードを使用していますか?バッファリングされたイメージオブジェクトを作成するときは、このオプションのような型を追加してみてください。

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; 
} 
+0

これまでのところ、私はチュートリアルの4行を持っています。そして私はそれらの変数が何か分からない:destとsrc。それらを宣言する方法? –