首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义svg-sprite的宽度/高度并将这些值写入文件(使用Linux或Mac )

如何定义svg-sprite的宽度/高度并将这些值写入文件(使用Linux或Mac )
EN

Stack Overflow用户
提问于 2019-02-14 12:46:03
回答 1查看 169关注 0票数 0

我正在尝试使用npm包 svg-sprite 创建svg-sprite.最后我得到了雪碧,看起来是这样的:

代码语言:javascript
复制
// icons-test.svg
...
<svg viewBox="0 0 108 54" ...>
  <svg height="54" width="54" viewBox="-2 -2 54 54" ...>
    <path d="...”>
   </svg>
  <svg height="54" width="54" viewBox="-2 -2 54 54" ...>
    <path d="...”>
  </svg>
</svg>

为了定义这个sprite的大小(例如宽度),我使用命令,从util ImageMagick识别

代码语言:javascript
复制
identify -format '%w' icons-test.svg

或者把它写到文件中

代码语言:javascript
复制
echo "\$spriteWidth = $(identify -format ‘%w’ icons-test.svg)px" >> styles.styl

的问题是,在文件中,我没有得到完整的sprite (108)的宽度,而只有最后一个子svg图像(54)的宽度,这是包含在普通sprite中的。

请告诉我我的错误在哪里?如何使识别返回正确的宽度。或者建议我换个变体来解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 14:48:32

我怀疑嵌套的svg标记混淆了ImageMagick的内部SVG解码器。尝试将SVG转换为MVG。它应该抛出嵌套的SVG结构。

代码语言:javascript
复制
$ convert icons-test.svg mvg:-

它将打印以下MVG指令。

代码语言:javascript
复制
push graphic-context
viewbox 0 0 108 54
affine 1 0 0 1 0 0
push graphic-context
viewbox 0 0 54 54
affine 1 0 0 1 2 2
push graphic-context
path ''
pop graphic-context
pop graphic-context
push graphic-context
viewbox 0 0 54 54
affine 1 0 0 1 2 2
push graphic-context
path ''
pop graphic-context
pop graphic-context
pop graphic-context

将嵌套的viewbox隔离到堆栈上的graphic-context,您应该能够正确地识别。

代码语言:javascript
复制
$ convert icons-test.svg mvg:- | identify -format '%w' mvg:-
#=> 108
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54690750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档