int x = label.getSize().width;
int y = label.getSize().height;
int ix = image.getWidth();
int iy = image.getHeight();
int dx = 0;
int dy = 0;
if(x/y > ix/iy) {
dy = y;
dx = dy*ix /iy;
} else {
dx = x;
dy = dx*iy /ix;
}
ImageIcon icon = new ImageIcon(image.getScaledInstance(dx, dy, image.SCALE_SMOOTH));
和完整代码:https://paste.ubuntu.com/26227642/
我只知道这段代码意味着制作缩放图像不会失真。那是为什么?
答案 0 :(得分:0)
if(x /y >ix /iy) {
dy = y;
dx = dy*ix /iy;
}else {
dx = x;
dy = dx*iy /ix;
}
这一切都是为了使Aspect Ratio
label
和你的ImageIcon
一样if statement
。这样就不会扭曲。
x/y
中的第一个条件表示标签的宽高比ix/iy
大于图片height
的宽高比。所以它首先设置了标签的dy
y
与图片ix/iy
的高度相同,并且为了与标签制作相同的宽高比,它将其与宽高比ix/iy
相乘图像即else block
与aspect ratio
相同的事情。 def __exit__(self, type, value, traceback):
return isinstance(value, TypeError)
更多。