我正在尝试使用自定义 svg 创建对角线线性渐变背景,但 ImageMagick 无法识别 svg 上指定的渐变路径。渐变应从左上角开始...
我正在尝试使用自定义 svg 创建对角线线性渐变背景,但 ImageMagick 无法识别 svg 上指定的渐变路径。渐变应从左上角开始,到右下角结束。
第一种方法
我尝试过使用 $imagick->newPseudoImage(600, 600, 'gradient:startColor-endColor')
,但它不支持渐变中的多个停止点。但它支持对角线使用 $imagick->setOption('vector', '0,0,600,600')
- 从左上到右下
第二种方法
第二种方法是创建一个内联 svg(指定了渐变)并将其提供给 Imagick,但 svg 解析器无法识别指定的对角线路径,并且默认为垂直或水平渐变。但是它支持多个颜色停止(偏移)。下面是使用的 svg 以及生成的图像。
<svg xmlns="http://www.w3.org/2000/svg" width="600px" height="600px" >
<defs>
<linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="black"/>
<stop offset="50%" stop-color="red"/>
<stop offset="100%" stop-color="orange"/>
</linearGradient>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="url(#gradient)"/>
</svg>
$image = new Imagick();
$image->readImageBlob($svg);
$image->setImageFormat("svg");
我确实非常喜欢将 svg 提供给 Imagick 的想法,但我不确定如何解决这个问题。
希望有人能帮助我。