这是我的代码"
ImageIcon ii=new ImageIcon("/Users/tushar_chutani/Desktop/apple.jpg");
Image image= ii.getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH);
图像没有被缩放代码有什么问题?
最佳答案
问题是 Image.getScaledInstance()
没有返回一个
完成的缩放图像。它将大部分缩放工作留给以后
使用图像像素的时间。
例如,如果您在 Graphics2D.drawImage()
中使用缩放图像
调用则该方法将返回 false 并继续异步绘制。然后你必须使用 ImageObserver
Graphics2D.drawImage()
调用中的参数等待缩放和绘制完成。
下面的例子展示了如何更简单地缩放图像
没有 ImageObserver
。缩放是通过绘制图标完成的
改为 BufferedImage
。
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Color;
import java.awt.Graphics2D;
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.RenderingHints;
public class Tushar2
{
public void scaleImage()
{
try
{
ImageIcon ii = new ImageIcon("/tmp/apple.jpg");
BufferedImage bi = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D)bi.createGraphics();
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY));
boolean b = g2d.drawImage(ii.getImage(), 0, 0, 50, 50, null);
System.out.println(b);
ImageIO.write(bi, "jpg", new File("/tmp/apple50.jpg"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String []args)
{
new Tushar2().scaleImage();
}
}
关于java - 调整图像大小 java getScaledInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7252983/