svg - 使用自定义 svg 具有多个停靠点的 Imagemagick 对角线线性渐变
问题描述
我正在尝试使用自定义 svg 创建对角线线性渐变背景,但 ImageMagick 无法识别 svg 上指定的渐变路径。渐变应该从左上角开始,到右下角结束。
我尝试使用的第一种方法$imagick->newPseudoImage(600, 600, 'gradient:startColor-endColor')
,但它不支持渐变中的多个停靠点。但是,它确实支持对角线使用$imagick->setOption('vector', '0,0,600,600')
- topleft to bottomright
第二种方法
第二种方法是创建一个内联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 的想法,但我不确定如何解决这个问题。
希望可以有人帮帮我。
解决方案
我的解决方案是使用安装 inkscape
brew install inkscape
如果在您的路径中找到 ImageMagick 将尝试使用 inkscape 或 RSVG。否则,它将默认使用它自己的内部 svg 渲染器。
推荐阅读
- dataset - 用于物体检测和分类的 kitti 数据集 3D 激光雷达点云数据
- mysql - 在 Rails 中使用英语模型和西班牙语数据库
- python - Python:根据位置、括号和括号从列表中获取每个元素
- javascript - 我可以使用中继更新器配置来更新简单的 graphQL 列表吗?
- ios - iPhoneX上的奇屏动画恢复应用
- c++ - 读取目录中的多个文件进行编辑和写入另一组文件
- arrays - 如何在 GoLang 中将项目附加到 []os.FileInfo
- javascript - 覆盖 BehaviorSubject 中的值会创建越来越大的条目
- javascript - 带有 laravel 的 bootstrap-vue.js 未知自定义元素:
错误 - python - 摆脱警告熊猫复制本地