将图像大小调整为可变/固定尺寸?

时间:2013-11-13 14:05:35

标签: kivy

假设您有一个包含3行1列的GridLayout。第一行和最后一行将是标签,中间行将包含图像。

调整图像大小以使其具有固定高度(可能与标签的高度相同或不同)的最佳方法是什么,其宽度与布局的宽度相同?是否可以在kivy中执行此操作,或者是否需要引入其他模块(如PIL)并使用图像缓冲区?创建一个以图像为背景的非绑定按钮(因此,让kivy负责调整大小)是否合理,或者这个解决方案有问题吗?感谢。

2 个答案:

答案 0 :(得分:7)

  

调整图像大小以使其具有固定高度(可能与标签的高度相同或不同)的最佳方法是什么,其宽度与布局的宽度相同?

我不确定你在这里问的确切。你在谈论Image小部件吗?你可以用

做到这一点
Image:
    source: 'whatever'
    size_hint_y: None  # Tells the layout to ignore the size_hint in y dir
    height: dp(40)  # The fixed height you want

您还可以通过查看Image widget的属性来控制不同的图像缩放可能性(拉伸,保持比例等)。

  

是否可以在kivy中执行此操作,或者是否需要引入其他模块(如PIL)并使用图像缓冲区?创建一个以图像为背景的非绑定按钮(因此,让kivy负责调整大小)是否合理,或者这个解决方案有问题吗?

即使我误解了你的问题,我认为无论你想要什么都应该很容易在kivy做。我不认为你的按钮解决方案会解决你的问题,或者为什么你会认为它会 - 你仍然需要提供有关Image小部件大小的说明以使其扩展,但是你没有获得任何东西从把它放在一个按钮。任何按钮的background_image属性的缩放都可以在没有Button的情况下轻松完成 - 如上所述,您可以使用Image小部件的不同属性控制宽高比缩放等。

答案 1 :(得分:5)

除了@inclement的答案

  Image:
        source: './data/icon.png'
        allow_stretch: True
        keep_ratio: True
        size_hint_y: None
        size_hint_x: None
        width: self.parent.width
        height: self.parent.width/self.image_ratio

使用这些属性,您可以缩放图像并将图像放置到框中,没有任何间隙。图像的宽度固定为父窗口小部件的宽度,高度根据图像的比例自动计算。