2012-02-22 3 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++; 

위 코드는 이미지를 검색하여 ImageIcon에 할당 한 다음 JLabel에 할당합니다. 아래의 resize 메서드를 사용하여 버퍼링 된 이미지의 크기를 조정하려고했습니다. 당신들, 왜 저를 위해 일하지 않는지에 대해 밝힐 수 있습니까? 오류가 발생하지 않고 이미지는 원래 크기로 유지됩니다.

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] = resize(myImages[i]); 

:

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 

당신은에 중간 선을 변경해야합니다.

+0

죄송합니다. 더 정확하게 구체적으로 잘못 될 수 있습니까? – Peddler

+0

업데이트 된 답변보기 ... – DNA

+0

훌륭하고 명확한 답변입니다. 대단히 감사합니다 @ DNA – Peddler

관련 문제