Yii2 - Imagine - 创建缩略图并保持透明背景

Posted

技术标签:

【中文标题】Yii2 - Imagine - 创建缩略图并保持透明背景【英文标题】:Yii2 - Imagine - creating a thumbnail and keeping transparent background 【发布时间】:2016-04-08 06:41:47 【问题描述】:

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

我读了这个链接:Imagine 上面写着:

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

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

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'

我有两个问题:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于Yii2 - Imagine - 创建缩略图并保持透明背景的主要内容,如果未能解决你的问题,请参考以下文章

yii2手动添加插件Imagine图片处理

PIL:缩略图并以方形图像结尾

Yii2 yii2-imagine的使用

使用 ec2 创建存储在 s3 上的图像缩略图并在完成时与 rails 通信的优雅方式?

如何同时将视频上传到 s3 为其创建缩略图并使用 nodejs 将其保存到同一存储桶中的另一个文件夹中?

在Yii2中从上传的图像创建缩略图