如何改变图像的大小?

Mic*_*ood 4 java

我正在创建一个太空入侵者的游戏,我希望所有的图像与屏幕分辨率成比例.这意味着它可以在所有屏幕尺寸上使用,所有图像都会缩小或变大,以便它们适合屏幕.游戏是全屏的.最简单的技术是什么?这也是设置一切尺寸的最佳方式吗?

Dav*_*amp 5

你有没看过Image#getScaledInstance()虽然它有它的垮台(Image of Perils of Image.getScaledInstance()),但问题是:

Image.getScaledInstance()不返回已完成的缩放图像.当使用图像像素时,它将大部分缩放工作留在以后的时间.

由于这些垮台你可能想要一种不同的方式来调整你的图像大小,你可以尝试这样的事情:

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 ImgUtils {

public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {
    BufferedImage bi = null;
    try {
        ImageIcon ii = new ImageIcon(filename);//path to image
        bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = (Graphics2D) bi.createGraphics();
        g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
        g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    return bi;
}

 }
Run Code Online (Sandbox Code Playgroud)

你会像以下一样使用它:

BufferedImage img=new ImgUtils().scaleImage(50,50,"c:/test.jpg");
//now you have a scaled image in img
Run Code Online (Sandbox Code Playgroud)

参考文献: