2012-02-22 10 views
1

イメージを50×50ピクセルにリサイズしようとしています。イメージをデータベースに保存されたパスから取得します。画像を取得して表示するのに問題はありません。私はちょうど私が画像のサイズを変更しようとすると思っています。イメージをバッファリングされたイメージとして取得するか、アイコンのサイズを変更しようとしたときにはどうすればよいですか?ImageIconまたはバッファリングされたイメージのサイズを変更しますか?

while (rs.next()) { 
         i = 1; 
         imagePath = rs.getString("path"); 
          System.out.println(imagePath + "\n"); 
          System.out.println("TESTING - READING IMAGE"); 
         System.out.println(i); 

         myImages[i] = ImageIO.read(new File(imagePath)); 
         **resize(myImages[i]);** 

         imglab[i] = new JLabel(new ImageIcon(myImages[i])); 
         System.out.println(i); 
         imgPanel[i]= new JPanel(); 
         imgPanel[i].add(imglab[i]); 
         loadcard.add(imgPanel[i], ""+i);  
         i++; 

上記のコードは、画像を取得した後、イメージアイコン、JLabelのに代入されます。私は、以下のサイズ変更メソッドを使用して、バッファリングされたイメージのサイズを変更しようとしました。あなたは、私のために働いていない理由について、光を当てることができますか?何のエラーもなく、画像は元のサイズのままです。

public static BufferedImage resize(BufferedImage img) { 
      int w = img.getWidth(); 
      int h = img.getHeight(); 
      int newH = 50; 
      int newW = 50; 
      BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType()); 
      Graphics2D g = dimg.createGraphics(); 
      System.out.println("Is this getting here at all " + dimg); 
      g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
      g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); 
      g.dispose(); 
      return dimg; 
      } 

答えて

5

各画像でresize()を呼び出していますが、配列内の画像は置き換えられません。だから、リサイズの出力は、()捨てられている:

myImages[i] = ImageIO.read(new File(imagePath)); // create an image 
resize(myImages[i]); // returns resized img, but doesn't assign it to anything 
imglab[i] = new JLabel(new ImageIcon(myImages[i])); // uses _original_ img 

あなたが真ん中の行を変更する必要があります。この作業を行うために

myImages[i] = resize(myImages[i]); 

+0

申し訳ありませんが、私が間違っている場所で具体的になるかもしれませんか? – Peddler

+0

私の更新された回答を参照してください... – DNA

+0

鮮やかな、明確な答え。大変ありがとう@DNA – Peddler

関連する問題