2010-12-06 15 views
3

pngファイルから作成されたBufferedImageがあります。それを作成するときに、タイプをTYPE_INT_ARGBに設定しました。これは私に透明なイメージを与えるはずです。 JPanelの内部でpaintComponentを使用して画像をペイントすると、黒い背景の画像が表示されます。私は本当にそれを透明にする必要があるので、どんな助けも役に立つでしょう。ここではわかりやすくするためのコードは次のとおりです。ここで透明なBufferedImageは、JLabelでペイントしている間に黒い背景で表示されます。

public class ImagePanel extends JPanel {  

    private static final long serialVersionUID = 1L; 
    private BufferedImage image; 

    public ImagePanel() { 
     this.image = null; 
    } 


    public void createImage(String fileName) { 
     this.image = ImageUtilities.getBufferedImage(fileName, this); 
     this.repaint(); 

    } 

    public void paint(Graphics g) { 
     g.drawImage(this.image, 0, 0, this); 
    } 
} 

は、私がイメージをロードする方法である:追加する

public class ImageUtilities { 

/** Create Image from a file, then turn that into a BufferedImage. 
*/ 

    public static BufferedImage getBufferedImage(String imageFile, Component c) { 
     Image image = c.getToolkit().getImage(imageFile); 
     waitForImage(image, c); 
     BufferedImage bufferedImage = new BufferedImage(image.getWidth(c), image.getHeight(c), 
        BufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2d = bufferedImage.createGraphics(); 
     g2d.drawImage(image, 0, 0, c); 
     return(bufferedImage); 
    } 

そして最後に一つは、それがどんな意味を持っている場合、このImagePanelは、別のパネルの内側にあるということです。

答えて

3

ない、これはあなたの問題を解決するかどうかわからしかし:

+0

新しいIO APIがトリックでしたが、古いメソッド(私が使用しているメソッドが古いとみなされていると仮定した場合)の解決策を見ていただければ幸いです。 – gmunk

2

古いバージョンのJavaを使用することに制限はありますか? ImageIO.read(fileName)を使ってイメージファイルをロードしてみてください。

+0

私が前のコメントで言ったように、ImageIO.readはそれを行いました。今は好奇心のために、私はそれが古い方法でどうやってできるか見るために試してみます。ありがとう:) – gmunk

+0

いいえ心配しています:)元の方法で試してみると、Toolkit.getDefaultToolkit()。createImage( "myimage.png")を使ってイメージを開き、先にBufferedImageを作成するのではなく、返されたイメージをコンポーネントに直接描画してください。 –

+0

でもOKですが、そのように開かれた画像に対して画像処理技術を実行できるようになります。私は、Javaでぼかし、鮮明化などがどのように実行されているかを示すデモ用のアプリケーションを作成しています。 – gmunk

0

(すなわちsetCompositeメソッド())、これを試してください:

g2d.setComposite(AlphaComposite.SrcOver)。 g2d.setPaint(backgroundColor); g2d.fillRect(0、0、w、h);

関連する問題