8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用自定义 svg 的 Imagemagick 对角线线性渐变,具有多个停止点

Finlay Weber 1月前

17 0

我正在尝试使用自定义 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");

enter image description here

我确实非常喜欢将 svg 提供给 Imagick 的想法,但我不确定如何解决这个问题。

希望有人能帮助我。

帖子版权声明 1、本帖标题:使用自定义 svg 的 Imagemagick 对角线线性渐变,具有多个停止点
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Finlay Weber在本站《symfony》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 第二种方法是否支持 gradientTransform?如果不支持,那么“svg 解析器无法识别指定的对角线路径”是什么意思?

  • 在第二种方法中,渐变路径(矢量)是 (0,0) -> (600,600),但渐变是从 (0,0) -> (0, 600) 绘制的

  • 对我来说,解决方案是使用安装 inkscape

    brew install inkscape
    

    如果在您的路径中找到,ImageMagick 将尝试使用 inkscape 或 RSVG。否则,它将默认使用其自己的内部 svg 渲染器。

返回
作者最近主题: