2

我正在尝试上传图像并将其缩放到最大 200 像素宽度或 200 像素高度取决于哪个更大,使用想象。

我读了这个链接:想象一下它在哪里说:

如果其中一个缩略图尺寸设置为空,则会根据原始图像的纵横比自动计算另一个尺寸。

我试过这段代码来改变宽度:

Image::thumbnail($target, 200, null)->save($target_to);

出现错误:异常 Imagine\Exception\InvalidArgumentException 与消息长度侧不能为 0 或负数。

我也在尝试上传具有透明背景的 png 文件。查看相同的链接,它说:

如果缩略图模式为 ImageInterface::THUMBNAIL_INSET,则原始图像将按比例缩小,使其完全包含在缩略图尺寸内。其余的填充可以通过 yii\imagine\Image::$thumbnailBackgroundColor 和 yii\imagine\Image::$thumbnailBackgroundAlpha 配置的背景。

查看他们提供的链接,它说它将填充:

$thumbnailBackgroundAlpha 公共静态属性(从 2.0.4 版开始可用)在指定宽度和高度的 ImageInterface::THUMBNAIL_INSET 模式下创建缩略图时使用的背景 alpha(透明度)。默认为实心。公共静态字符串 $thumbnailBackgroundAlpha = 100 $thumbnailBackgroundColor 公共静态属性(从 2.0.4 版开始可用) 在指定宽度和高度的 ImageInterface::THUMBNAIL_INSET 模式下创建缩略图时使用的背景颜色。默认为白色。公共静态字符串 $thumbnailBackgroundColor = 'FFF'

我有两个问题:

  1. 这会保持透明背景吗?公共静态字符串 $thumbnailBackgroundAlpha = 100 $thumbnailBackgroundColor 公共静态属性(从 2.0.4 版本开始可用)

  2. 我不想给出宽度和高度,只给出一个维度,因此图像将相应地调整大小。我怎么做?

4

1 回答 1

0

图像缩略图与最新版本一样,将 null 作为参数传递会使相应的null参数值为零,因此会引发异常。您可以使用如图所示解决它。正如您在代码中看到的那样,我只传递了宽度参数,即 400,并使用相同的计算高度并传递给缩略图方法。

于 2018-08-11T06:57:48.143 回答