调整图像java getScaledInstance的大小 [英] resizing image java getScaledInstance

查看:651
本文介绍了调整图像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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆