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 - 创建缩略图并保持透明背景的主要内容,如果未能解决你的问题,请参考以下文章
使用 ec2 创建存储在 s3 上的图像缩略图并在完成时与 rails 通信的优雅方式?