【问题标题】:Imagemagick - Trim SVG canvas to fitImagemagick - 修剪 SVG 画布以适应
【发布时间】:2018-07-05 13:16:00
【问题描述】:

我有一个 SVG 集合,它们的画布似乎不适合它们的大小。因此,它们似乎偏离了中心。我可以将它们导入 Sketch,然后将它们再次导出为 SVG。 Sketch 将获取 SVG 并修剪画布,因此 SVG 具有非常小的填充值。它完全符合我的要求(劳动密集型),但是,我想确定如何以编程方式执行此操作。

我正在使用来自这个 repo 的 SVG:https://github.com/erikflowers/weather-icons

我执行的命令:mogrify -density 3600 -extent 1100x1100 -gravity center -background none -format png *.svg

以下是使用 mogrify 转换 SVG 后的示例 PNG:

这是通过 Sketch 导出后的示例 PNG,然后转换:

【问题讨论】:

  • 您是否意识到 ImageMagick 会对您的图像进行光栅化,并且它们将不再是可以在没有 "jaggies" 的情况下调整大小的矢量图像?
  • 是的,因为我需要它们的平台不支持 SVG。只要我保留源 svgs,我应该是好的。

标签: svg imagemagick mogrify


【解决方案1】:

我认为你关闭了,但需要在扩展画布之前执行修剪操作。其实-gravity center -extent 1100x1100应该是最后一个操作了。

mogrify -density 3600 -background none -fill white \
        -trim -gravity center -extent 1100x1100 \
        -format png wi-thunderstorm.svg

虽然将-density-size 交换可能证明与Sketch 更一致。

 mogrify -size 1100x1100 -background none -fill white \
         -trim -gravity Center -extent 1100x1100 \
         -format png wi-thunderstorm.svg 

【讨论】:

  • 所以我正在尝试这个,mogrify -trim +repage -density 3600 -extent 1100x1100 -gravity center -background none -format png *.svg
  • 你能让-fill white真正工作吗?
  • -fill white 对我来说没有问题。 SVG 路径的样式没有定义,所以在读取 SVG 之前设置填充、描边和背景属性应该继承。
  • 当我使用-verbose 时,我根本看不到正在执行填充 - 只是背景颜色。
【解决方案2】:

此命令将获取当前目录中的所有 SVG 文件,将它们修剪到其生命的一毫米以内,然后在所有边上添加 10px 透明边框:

mogrify -format png -trim -bordercolor none -border 10 +repage  *svg

【讨论】:

    【解决方案3】:

    以防万一您想在代码中重新定位实际的 SVG,您可以这样做。

    这是在 Javascript 中。因此,您可以编写类似无头 Chrome 脚本的内容。或者例如,您可以将其转换为 Java 并使用 Batik。

    var svg = document.getElementById("recenter");
    
    // Get the real bounding box of the icon shape
    var bbox = svg.getBBox();
    
    // Get the viewBox width and height
    var viewBox_width = svg.viewBox.baseVal.width;
    var viewBox_height = svg.viewBox.baseVal.height;
    
    // Recenter the contents
    svg.viewBox.baseVal.x = bbox.x - (viewBox_width - bbox.width) / 2;
    svg.viewBox.baseVal.y = bbox.y - (viewBox_height - bbox.height) / 2;
    svg {
      width: 200px;
      background: linen;
    }
    <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
    	 viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
    <path d="M4.63,16.91c0,1.11,0.33,2.1,0.99,2.97s1.52,1.47,2.58,1.79l-0.66,1.68c-0.03,0.14,0.02,0.22,0.14,0.22h2.13l-0.98,4.3h0.28
    	l3.92-5.75c0.04-0.04,0.04-0.09,0.01-0.14c-0.03-0.05-0.08-0.07-0.15-0.07h-2.18l2.48-4.64c0.07-0.14,0.02-0.22-0.14-0.22h-2.94
    	c-0.09,0-0.17,0.05-0.23,0.15l-1.07,2.87c-0.71-0.18-1.3-0.57-1.77-1.16c-0.47-0.59-0.7-1.26-0.7-2.01c0-0.83,0.28-1.55,0.85-2.17
    	c0.57-0.61,1.27-0.97,2.1-1.07l0.53-0.07c0.13,0,0.2-0.06,0.2-0.18l0.07-0.51c0.11-1.08,0.56-1.99,1.37-2.72
    	c0.81-0.73,1.76-1.1,2.85-1.1c1.09,0,2.04,0.37,2.85,1.1c0.82,0.73,1.28,1.64,1.4,2.72l0.07,0.58c0,0.11,0.06,0.17,0.18,0.17h1.6
    	c0.91,0,1.68,0.32,2.32,0.95c0.64,0.63,0.97,1.4,0.97,2.28c0,0.85-0.3,1.59-0.89,2.21c-0.59,0.62-1.33,0.97-2.2,1.04
    	c-0.13,0-0.2,0.06-0.2,0.18v1.37c0,0.11,0.07,0.17,0.2,0.17c1.33-0.04,2.46-0.55,3.39-1.51s1.39-2.11,1.39-3.45
    	c0-0.9-0.22-1.73-0.67-2.49c-0.44-0.76-1.05-1.36-1.81-1.8c-0.77-0.44-1.6-0.66-2.5-0.66H20.1c-0.33-1.33-1.04-2.42-2.11-3.26
    	s-2.3-1.27-3.68-1.27c-1.41,0-2.67,0.44-3.76,1.31s-1.79,1.99-2.1,3.36c-1.11,0.26-2.02,0.83-2.74,1.73S4.63,15.76,4.63,16.91z
    	 M12.77,26.62c0,0.39,0.19,0.65,0.58,0.77c0.01,0,0.05,0,0.11,0.01c0.06,0.01,0.11,0.01,0.14,0.01c0.17,0,0.33-0.05,0.49-0.15
    	c0.16-0.1,0.27-0.26,0.32-0.48l2.25-8.69c0.06-0.24,0.04-0.45-0.07-0.65c-0.11-0.19-0.27-0.32-0.5-0.39
    	c-0.17-0.02-0.26-0.03-0.26-0.03c-0.16,0-0.32,0.05-0.47,0.15c-0.15,0.1-0.26,0.25-0.31,0.45l-2.26,8.72
    	C12.78,26.44,12.77,26.53,12.77,26.62z M16.93,23.56c0,0.13,0.03,0.26,0.1,0.38c0.14,0.22,0.31,0.37,0.51,0.44
    	c0.11,0.03,0.21,0.05,0.3,0.05s0.2-0.02,0.32-0.08c0.21-0.09,0.35-0.28,0.42-0.57l1.44-5.67c0.03-0.14,0.05-0.23,0.05-0.27
    	c0-0.15-0.05-0.3-0.16-0.45s-0.26-0.26-0.46-0.32c-0.17-0.02-0.26-0.03-0.26-0.03c-0.17,0-0.33,0.05-0.47,0.15
    	c-0.14,0.1-0.24,0.25-0.3,0.45l-1.46,5.7c0,0.02,0,0.05-0.01,0.11C16.93,23.5,16.93,23.53,16.93,23.56z"/>
    </svg>
    
    <svg id="recenter" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
    	 viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
    <path d="M4.63,16.91c0,1.11,0.33,2.1,0.99,2.97s1.52,1.47,2.58,1.79l-0.66,1.68c-0.03,0.14,0.02,0.22,0.14,0.22h2.13l-0.98,4.3h0.28
    	l3.92-5.75c0.04-0.04,0.04-0.09,0.01-0.14c-0.03-0.05-0.08-0.07-0.15-0.07h-2.18l2.48-4.64c0.07-0.14,0.02-0.22-0.14-0.22h-2.94
    	c-0.09,0-0.17,0.05-0.23,0.15l-1.07,2.87c-0.71-0.18-1.3-0.57-1.77-1.16c-0.47-0.59-0.7-1.26-0.7-2.01c0-0.83,0.28-1.55,0.85-2.17
    	c0.57-0.61,1.27-0.97,2.1-1.07l0.53-0.07c0.13,0,0.2-0.06,0.2-0.18l0.07-0.51c0.11-1.08,0.56-1.99,1.37-2.72
    	c0.81-0.73,1.76-1.1,2.85-1.1c1.09,0,2.04,0.37,2.85,1.1c0.82,0.73,1.28,1.64,1.4,2.72l0.07,0.58c0,0.11,0.06,0.17,0.18,0.17h1.6
    	c0.91,0,1.68,0.32,2.32,0.95c0.64,0.63,0.97,1.4,0.97,2.28c0,0.85-0.3,1.59-0.89,2.21c-0.59,0.62-1.33,0.97-2.2,1.04
    	c-0.13,0-0.2,0.06-0.2,0.18v1.37c0,0.11,0.07,0.17,0.2,0.17c1.33-0.04,2.46-0.55,3.39-1.51s1.39-2.11,1.39-3.45
    	c0-0.9-0.22-1.73-0.67-2.49c-0.44-0.76-1.05-1.36-1.81-1.8c-0.77-0.44-1.6-0.66-2.5-0.66H20.1c-0.33-1.33-1.04-2.42-2.11-3.26
    	s-2.3-1.27-3.68-1.27c-1.41,0-2.67,0.44-3.76,1.31s-1.79,1.99-2.1,3.36c-1.11,0.26-2.02,0.83-2.74,1.73S4.63,15.76,4.63,16.91z
    	 M12.77,26.62c0,0.39,0.19,0.65,0.58,0.77c0.01,0,0.05,0,0.11,0.01c0.06,0.01,0.11,0.01,0.14,0.01c0.17,0,0.33-0.05,0.49-0.15
    	c0.16-0.1,0.27-0.26,0.32-0.48l2.25-8.69c0.06-0.24,0.04-0.45-0.07-0.65c-0.11-0.19-0.27-0.32-0.5-0.39
    	c-0.17-0.02-0.26-0.03-0.26-0.03c-0.16,0-0.32,0.05-0.47,0.15c-0.15,0.1-0.26,0.25-0.31,0.45l-2.26,8.72
    	C12.78,26.44,12.77,26.53,12.77,26.62z M16.93,23.56c0,0.13,0.03,0.26,0.1,0.38c0.14,0.22,0.31,0.37,0.51,0.44
    	c0.11,0.03,0.21,0.05,0.3,0.05s0.2-0.02,0.32-0.08c0.21-0.09,0.35-0.28,0.42-0.57l1.44-5.67c0.03-0.14,0.05-0.23,0.05-0.27
    	c0-0.15-0.05-0.3-0.16-0.45s-0.26-0.26-0.46-0.32c-0.17-0.02-0.26-0.03-0.26-0.03c-0.17,0-0.33,0.05-0.47,0.15
    	c-0.14,0.1-0.24,0.25-0.3,0.45l-1.46,5.7c0,0.02,0,0.05-0.01,0.11C16.93,23.5,16.93,23.53,16.93,23.56z"/>
    </svg>

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 2020-06-23
      • 2017-11-17
      • 1970-01-01
      • 2013-12-07
      • 2014-05-18
      • 2021-01-24
      • 2021-12-17
      相关资源
      最近更新 更多