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);
    }
    // ...
}
4

3 に答える 3

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 に表示される結果のスケーリングされた画像: 結果のスケーリングされた画像

結果のスケーリングされた画像 (ブラウザで表示): ディスクからアップロードされた結果画像

元の画像: 元の画像

于 2012-07-31T11:03:02.283 に答える
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);
}

}

于 2012-08-01T10:37:44.950 に答える
0

この答えは、あなたが探しているものとほとんど同じです(私は自分でテストしていませんが):

ImageIO.read(File file) を使用して JPEG 画像を読み取れません

于 2012-08-01T19:14:32.547 に答える