2012-07-31 4 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'? –

+1

http://stackoverflow.com/a/6075213/571816 – JIV

+0

ImageIO в javax.imageio.ImageIO – Peter

ответ

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

+0

Попробуйте выполнить тест Google для основного изображения в файл jpg – Peter

+0

@Peter Я озадачен тем, как вы получаете розовое изображение, в то время как мои скриншоты, очевидно, доказывают обратное. Что вы подразумеваете под «Попробовать google ...», дайте мне прямую ссылку, если вы хотите мне что-то показать. –

0

общественный класс 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

, что есть мой исходный код. тот же источник Гийома Полета. но мой исходный код имеет розовый цвет – Peter