调整图像大小java GetScaleInstance
这是我的密码“调整图像大小java GetScaleInstance,java,image,Java,Image,这是我的密码“ 未缩放图像代码有什么问题?问题在于image.getScaledInstance()不返回 已完成的缩放图像。将大部分缩放工作留给以后处理 使用图像像素的时间 例如,如果在Graphics2D.drawImage()中使用缩放图像 然后调用该方法将返回false并继续异步绘制。然后必须使用ImageObserver 调用Graphics2D.drawImage()中的参数,以等待缩放和绘图完成 下面的示例演示如何更简单地缩放图像 没有ImageObserver。缩放是通过绘制图标
未缩放图像代码有什么问题?问题在于
image.getScaledInstance()
不返回
已完成的缩放图像。将大部分缩放工作留给以后处理
使用图像像素的时间
例如,如果在Graphics2D.drawImage()中使用缩放图像
然后调用该方法将返回false并继续异步绘制。然后必须使用ImageObserver
调用Graphics2D.drawImage()中的参数,以等待缩放和绘图完成
下面的示例演示如何更简单地缩放图像
没有ImageObserver
。缩放是通过绘制图标来完成的
改为将其放入缓冲区图像中
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();
}
}
您可以再次将图像包装到图像图标中。图像图标通常在其构造函数中加载图像,并为此使用其自己的媒体跟踪器。我现在使用以下代码:
Image image = icon.getImage().getScaledInstance(
icon.getIconWidth() * NEW / OLD,
icon.getIconHeight() * NEW / OLD,
Image.SCALE_SMOOTH);
icon = new ImageIcon(image, icon.getDescription());
您可以直接使用新图标,或者调用getImage()来处理新图像。上面的代码还对一些新的和旧的图像对进行了保持纵横比的缩放
再见您的代码:
ImageIcon ii=new
ImageIcon("/Users/tushar_chutani/Desktop/apple.jpg");
加上这个:
Image image= ii.getImage().getScaledInstance(50, 50,
Image.SCALE_SMOOTH);
ii=new ImageIcon(image);
如果要显示:
加上这个
jLabel1.setIcon(ii);
你会遇到什么错误?你真的能显示原始图像图标吗?你怎么知道没有缩放。根据你发布的两行代码,你没有对图像做任何处理。发布你的,这说明了问题。图像没有显示…图像变为白色…然后它可能没有读取图像。你没有发布SSCCE,因此我们不能为您做太多其他事情。它是否适用于其他图像。此处报告了某些jpeg由于其颜色模型而出现的一些问题。它不适用于任何其他文件。接受的答案很好,但我认为此答案更容易理解,感谢您的深入了解!
jLabel1.setIcon(ii);