2012-07-31 223 views
2
public static void main(String argsp[]){ 

    File src = new File("C:\\Users\\chang\\Desktop\\shinichi_hoshi-2011-hp.jpg"); 
    try { 
     FileInputStream fis = new FileInputStream(src); 
     BufferedImage bi = ImageIO.read(fis); 
     FileOutputStream fos = new FileOutputStream("C:\\Users\\chang\\Desktop\\www1.jpg"); 
     BufferedImage bsi = ImageUtil.resizeImage(bi,100,100,true,0); 

     ImageIO.write(bsi, "jpg", fos); 
    } 
    // ... 
} 
+2

什麼是'ImageUtil'類? – 2012-07-31 09:36:56

+1

http://stackoverflow.com/a/6075213/571816 – JIV 2012-07-31 09:37:24

+0

javax.imageio.ImageIO中的ImageIO – Peter 2012-07-31 10:08:42

回答

2

問題必須出現在您的resizeImage方法中。我有你的代碼沒有問題:

import java.awt.Image; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class TestImageResize { 

    protected void initUI() throws MalformedURLException, IOException { 
     final JFrame frame = new JFrame(TestImageResize.class.getSimpleName()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     BufferedImage bi = ImageIO.read(new URL("http://noupe.com/img/wallpaper-4.jpg")); 
     File file = new File(System.getProperty("user.home"), "test.jpg"); 
     FileOutputStream fos = new FileOutputStream(file); 
     Image image = bi.getScaledInstance(100, -1, Image.SCALE_SMOOTH); 
     BufferedImage bsi = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB); 
     bsi.getGraphics().drawImage(image, 0, 0, null); 
     ImageIO.write(bsi, "jpg", fos); 
     JPanel panel = new JPanel(); 
     JLabel label = new JLabel(new ImageIcon(file.getAbsolutePath())); 
     panel.add(label); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        new TestImageResize().initUI(); 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 

結果縮放後的圖像顯示在JFrame中: Result scaled image

結果縮放後的圖像(由你的瀏覽器中顯示): Result image uploaded from disk

原圖: Original image

+0

結果爲粉紅色。 – Peter 2012-07-31 11:23:46

+0

嘗試谷歌測試的主圖片到jpg文件 – Peter 2012-07-31 11:28:33

+0

@彼得我對你如何得到一個粉紅色的圖像感到困惑,而我的截圖顯然證明是相反的。如果你想告訴我一些東西,你是什麼意思「試試谷歌...」,給我一個直接的鏈接。 – 2012-07-31 12:41:27

0

public class ImageTest {

public static void main(String argsp[]) { 

    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       new ImageTest().initUI(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

} 

protected void initUI() throws MalformedURLException, IOException { 
    final JFrame frame = new JFrame(ImageTest.class.getSimpleName()); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    BufferedImage bi = ImageIO.read(new URL(
      "http://www.google.co.kr/logos/2012/field_hockey-2012-hp.jpg")); 
    File file = new File(System.getProperty("user.home"), "test1.jpg"); 
    FileOutputStream fos = new FileOutputStream(file); 
    Image image = bi.getScaledInstance(100, -1, Image.SCALE_SMOOTH); 
    BufferedImage bsi = new BufferedImage(image.getWidth(null), 
      image.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    bsi.getGraphics().drawImage(image, 0, 0, null); 
    ImageIO.write(bi, "jpg", fos); 
    JPanel panel = new JPanel(); 
    JLabel label = new JLabel(new ImageIcon(file.getAbsolutePath())); 
    panel.add(label); 
    frame.add(panel); 
    frame.pack(); 
    frame.setVisible(true); 
} 

}

+0

那是我的源代碼。 Guillaume Polet的同一來源。但我的源代碼有粉紅色 – Peter 2012-08-01 10:42:14