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

Posted

技术标签:

【中文标题】将图像调整为可变/固定尺寸?【英文标题】:Resizing an image to variable/fixed dimensions? 【发布时间】:2013-11-26 04:11:35 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

我不确定你在这里问的是什么。你在谈论图像小部件吗?你可以这样做

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 小部件的不同属性控制纵横比缩放等。

【讨论】:

谢谢,不客气。我被甩了,因为没有指定 'size_hint_y: None','height' 属性没有任何效果。【参考方案2】:

除了@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

使用这些属性,您可以缩放图像并将图像无间隙地放置到框上。图片的宽度固定为父控件的宽度,高度根据图片的比例自动计算。

【讨论】:

以上是关于将图像调整为可变/固定尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

在php中将图像调整大小并裁剪为固定大小

计算用于调整大小的图像大小比率

python 根据图像的长边尺寸将图像调整为多种不同的尺寸。

当被调整大小的窗口的图像尺寸的缩小

使用 PHP 将图像大小调整为更高分辨率 [重复]

matlab如何让调整保存图像的大小