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);
}
// ...
}
ответ
Проблема должна лежать в вашем методе 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:
Результат масштабируется изображение (отображается в вашем браузере):
Исходное изображение:
Результаты в розовом. – Peter
Попробуйте выполнить тест Google для основного изображения в файл jpg – Peter
@Peter Я озадачен тем, как вы получаете розовое изображение, в то время как мои скриншоты, очевидно, доказывают обратное. Что вы подразумеваете под «Попробовать google ...», дайте мне прямую ссылку, если вы хотите мне что-то показать. –
общественный класс 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);
}
}
, что есть мой исходный код. тот же источник Гийома Полета. но мой исходный код имеет розовый цвет – Peter
Этот ответ выглядит довольно много, что вы ищете (хотя я не проверял это сам):
Что такое класс 'ImageUtil'? –
http://stackoverflow.com/a/6075213/571816 – JIV
ImageIO в javax.imageio.ImageIO – Peter