gpt4 book ai didi

java - 如何在Java中使图像覆盖屏幕上尽可能多的空间而不丢失比例?

转载 作者:行者123 更新时间:2023-11-30 06:01:56 25 4
gpt4 key购买 nike

我有一个图像,我想在不损失比例的情况下使其尽可能大。我还希望它能够在不同的屏幕尺寸下工作。我正在使用以下不保留比例的代码:

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double screen_width = screenSize.getWidth();
double screen_height = screenSize.getHeight();

Image img = ImageIO.read(<PATH_TO_IMAGE>);
img = img.getScaledInstance((int)screen_width, (int)screen_height, Image.SCALE_SMOOTH);

有没有一种方法可以在保持比例的同时调整图像大小,并且仍然在屏幕上占用尽可能多的空间。

最佳答案

这里有两个选择:保持整个图像可见,但可能留下大量空间未被覆盖,或者覆盖整个屏幕,但可能使一些图像过大,从而不可见。

在这两种情况下,为了保持比例,您需要使用单个因子进行缩放。

案例一)

BufferedImage img=ImageIO.read(new File(....));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double screen_width = screenSize.getWidth();
double screen_height = screenSize.getHeight();
double scalex=screen_width/img.getWidth(), scaley=screen_height/img.getHeight();
double scale=Math.min(scalex, scaley);
int w=(int)(scale*img.getWidth()), h=(int)(scale*img.getHeight());
BufferedImage img2=new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
img2.getGraphics().drawImage(img, 0, 0, w, h, null);

情况b)

BufferedImage img=ImageIO.read(new File(....));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double screen_width = screenSize.getWidth();
double screen_height = screenSize.getHeight();
double scalex=screen_width/img.getWidth(), scaley=screen_height/img.getHeight();
double scale=Math.max(scalex, scaley);
int w=(int)(scale*img.getWidth()), h=(int)(scale*img.getHeight());
BufferedImage img2=new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
img2.getGraphics().drawImage(img, 0, 0, w, h, null);

关于java - 如何在Java中使图像覆盖屏幕上尽可能多的空间而不丢失比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52080090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com