调整图像java getScaledInstance的大小 [英] resizing image java getScaledInstance
问题描述
这是我的代码
ImageIcon ii=new ImageIcon("/Users/tushar_chutani/Desktop/apple.jpg");
Image image= ii.getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH);
图片没有被缩放到代码有什么问题?
the image is not being scaled what is wrong with the code?
推荐答案
问题在于 Image.getScaledInstance()
不会返回
完成的缩放图像。当使用图像像素时,它会留下大部分缩放工作以用于稍后的
时间。
The problem is that Image.getScaledInstance()
does not return a
finished, scaled image. It leaves much of the scaling work for a later
time when the image pixels are used.
例如,如果您在 Graphics2D.drawImage()
调用中使用缩放图像,那么该方法将返回false并继续异步绘制。然后你必须在 Graphics2D.drawImage()中使用
调用以等待完成缩放和绘图。 ImageObserver
参数
For example, if you use the scaled image in a Graphics2D.drawImage()
call then the method will return false and continue drawing asynchronously. You then have to use the ImageObserver
parameter in the Graphics2D.drawImage()
call to wait for completion of the scaling and drawing.
以下示例显示如何在没有<$ c的情况下更简单地缩放图像
$ C > ImageObserver的。缩放是通过将图标
绘制到 BufferedImage
来完成的。
The following example shows how to scale images more simply
without an ImageObserver
. The scaling is done by drawing the icon
into a BufferedImage
instead.
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 getScaledInstance的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!