PHP+Imagick:如何将渐变应用到图像的背景部分


PHP+Imagick: How to apply a gradient to background to part of an image?

这似乎是一个重复的问题,但我找不到确切的场景。不过可能是错的。

我的问题是,假设我在150x150的画布内有一个100x100像素的正方形,$square。背景是透明的。

我克隆了正方形,然后裁剪了我需要处理的部分($detail)。

我需要在$detail上应用从上到下的渐变,这样顶部的白色透明度大约为60%,底部的透明度为100%。

然后,在$image上合成$detail。

我不能使用convert,只能使用php-imagick函数。

提前感谢!是否

convert在最近的版本中有一个特殊的创建运算符,用于生成渐变,简称为gradient:,它们被实现为伪图像格式。

如果您想要非垂直渐变或具有透明度,gradient:运算符的使用可能会非常复杂,因此请阅读文档。请注意,ImageMagick的底层版本将对您的操作方式产生影响。

您可以使用IMagick操作符创建伪格式图像:Imagick::newPseudoImage()

一旦你有了合适大小的渐变,你就可以用你的$detail图像来合成它。

一般来说,我使用IMagick之类的东西的技巧是,首先使用convert获得正确的命令,然后将其翻译到接口。