使用ImageMagick从SVG转换为PNG时裁剪的图像

睡觉

我有一个类似于的SVG文件

http://www.fileformat.info/info/unicode/char/00c1/latin_capital_letter_a_with_acute.svg

当我使用ImageMagick将其转换为PNG时,如下所示:

convert latin_capital_letter_a_with_acute.svg tmp.png

那么只有该字符的顶部是可见的。

SVG文件未指定任何高度和宽度。如果我在XML文件中手动指定width =“ 25cm” height =“ 25cm”,那么角落中的完整字符将作为小图像,而大背景则填充了图像的其余部分。我在Stackexchange和各种论坛中进行了搜索,但找不到解决方案。

我也尝试过使用PHP进行以下操作。但是它仍在产生裁剪后的图像。

我认为这是检测SVG图像大小正确的问题。但是想不出一种简单的方法来做到这一点。

库尔特·菲佛

我使用以下命令成功地从您的链接转换了SVG:

convert    \
 http://www.fileformat.info/info/unicode/char/00c1/latin_capital_letter_a_with_acute.svg \
 latin_capital_letter_a_with_acute.png

这是结果,对我来说看起来不错:

从SVG生成的PNG

我的ImageMagick版本是(根据convert -version):

 版本:ImageMagick 6.9.0-0 Q16 x86_64 2014-12-06 http://www.imagemagick.org
 版权:版权所有(C)1999-2014 ImageMagick Studio LLC
 功能:DPC模块
 代表(内建):bzlib开罗djvu fftw fontconfig freetype gslib gvc \
                       jbig jng jp2 jpeg lcms lqr ltdl lzma openexr \
                       pangocairo png ps rsvg tiff webp wmf x xml zlib

但是,并不是说ImageMagick本身就直接完成了解释SVG的繁重工作。My ImageMagick使用外部委托来实现此目的。通过将-verbose设置添加到命令行,可以使此工作原理完全可见

转换-verbose letter_a_with_acute.svg letter_a_with_acute.png

 “ / opt / local / bin / inkscape”“ / var / tmp / magick-12470O5QRRVap0Ub4” \
     --export-eps =“ / var / tmp / magick-124705G1EV-reRRrb” --export-dpi =“ 90,90” \
     --export-background =“ rgb(100%,100%,100%)” --export-background-opacity =“ 1” \
       >“ / var / tmp / magick-12470W9feuKm0JHUA” 2>&1

 / var / tmp / magick-12470qEPdaNM3mKYw1 PNG 155x209 155x209 + 0 + 0 8位sRGB 3.04KB 0.000u 0:00.000
 / var / tmp / magick-124705G1EV-reRRrb PS 155x209 155x209 + 0 + 0 16位sRGB 3.04KB 0.000u 0:00.000

 letter_a_with_acute.svg => / var / tmp / magick-124705G1EV-reRRrb PS 155x209 155x209 + 0 + 0 16位sRGB 3.04KB 0.000u 0:00.000
 letter_a_with_acute.svg => latin_capital_letter_a_with_acute.png PS 155x209 155x209 + 0 + 0 8位sRGB 17c 2.93KB 0.000u 0:00.000

 [ghostscript库] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
                       -dMaxBitmap = 500000000 -dAlignToPixels = 0 -dGridFitTT = 2 \
                      “ -sDEVICE = pngalpha” -dTextAlphaBits = 4 -dGraphicsAlphaBits = 4 \
                      “ -r72x72” -g155x209“ -sOutputFile = / var / tmp / magick-12470qEPdaNM3mKYw%d” \
                      “ -f / var / tmp / magick-12470Xt3b3Qubkxx2” \
                      “ -f / var / tmp / magick-12470VRcUz0MbmdiC”

您可以清楚地看到,convert在两个不同的步骤中雇用了两个委托来实现转换:

  1. 首先,它运行一个inkscape命令。此命令将SVG导出到EPS。

  2. 其次,它运行一个Ghostscript命令。此命令将EPS从步骤1转换为最终的PNG。

  3. 在上述两个步骤之间,它可能会运行其他命令,identify以便找出生成的EPS的尺寸。

换句话说,如果您无法正确设置ImageMagick委托,以便他们为您处理SVG文件,则始终可以直接在命令行上使用Inkscape来创建PNG:

inkscape                                    \
  --without-gui                             \
  --export-png=out.png                      \
  --export-dpi="90,90"                      \
  --export-background="rgb(100%,100%,100%)" \
  --export-background-opacity="1"           \
    input.svg

查看结果,out.png似乎在该字母周围使用了太多空白:

  identify out.png  
   out.png PNG 744x1052 744x1052+0+0 8-bit sRGB 13.1KB 0.000u 0:00.000

可以通过ImageMagick进行纠正:

  convert out.png -trim +repage trimmed.png

查看:

  identify trimmed.png 
   trimmed.png PNG 193x260 193x260+0+0 8-bit sRGB 256c 3.53KB 0.000u 0:00.000

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ImageMagick从SVG转换为PNG时裁剪的图像

来自分类Dev

使用ImageMagick将图像转换为PNG和JPG

来自分类Dev

使用ImageMagick将图像转换为PNG和JPG

来自分类Dev

使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

来自分类Dev

使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

来自分类Dev

使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

来自分类Dev

使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

来自分类Dev

svg中的嵌入式图像在将svg转换为png时消失了

来自分类Dev

在Android中使用iText库将图像转换为PDF时,为什么会裁剪图像

来自分类Dev

如何使用 ImageMagick 6.9.3-8 Q16 版本将 SVG 转换为 PNG?

来自分类Dev

使用已应用的图像作为SVG元素将SVG转换为PNG

来自分类Dev

使用GD将SVG转换为PNG

来自分类Dev

如何使用Python Wand / ImageMagick将PSD转换为PNG?

来自分类Dev

ImageMagick:不使用文件将PDF转换为PNG nodejs?

来自分类Dev

如何将 png 图像转换为内联 svg

来自分类Dev

将SVG转换为PNG,并将应用的图像作为背景转换为SVG元素

来自分类Dev

如何使用ImageMagick提高裁剪图像的性能?

来自分类Dev

使用librsvg / rsvg通过ImageMagick转换SVG图像

来自分类Dev

使用librsvg / rsvg通过ImageMagick转换SVG图像

来自分类Dev

ImageMagick png为svg图像大小

来自分类Dev

将SVG转换为PNG时包括字体

来自分类Dev

如何使用imagemagick转换缩放和裁剪?

来自分类Dev

使用imagemagick将JPG图像从灰度转换为RGB

来自分类Dev

无法使用PHP和ImageMagick将PDF转换为图像

来自分类Dev

ImageMagick / Imagick:将具有Alpha通道的PNG转换为2色图像(彩色,透明)

来自分类Dev

旋转时SVG图像元素被裁剪

来自分类Dev

自动将SVG转换为Android可使用的PNG

来自分类Dev

无法使用canvg将svg转换为png

来自分类Dev

如何使用软件将PNG转换为SVG?

Related 相关文章

  1. 1

    使用ImageMagick从SVG转换为PNG时裁剪的图像

  2. 2

    使用ImageMagick将图像转换为PNG和JPG

  3. 3

    使用ImageMagick将图像转换为PNG和JPG

  4. 4

    使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

  5. 5

    使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

  6. 6

    使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

  7. 7

    使用imagemagick将GIF图像转换为PNG,但获得RGBA图像而不是变色版本

  8. 8

    svg中的嵌入式图像在将svg转换为png时消失了

  9. 9

    在Android中使用iText库将图像转换为PDF时,为什么会裁剪图像

  10. 10

    如何使用 ImageMagick 6.9.3-8 Q16 版本将 SVG 转换为 PNG?

  11. 11

    使用已应用的图像作为SVG元素将SVG转换为PNG

  12. 12

    使用GD将SVG转换为PNG

  13. 13

    如何使用Python Wand / ImageMagick将PSD转换为PNG?

  14. 14

    ImageMagick:不使用文件将PDF转换为PNG nodejs?

  15. 15

    如何将 png 图像转换为内联 svg

  16. 16

    将SVG转换为PNG,并将应用的图像作为背景转换为SVG元素

  17. 17

    如何使用ImageMagick提高裁剪图像的性能?

  18. 18

    使用librsvg / rsvg通过ImageMagick转换SVG图像

  19. 19

    使用librsvg / rsvg通过ImageMagick转换SVG图像

  20. 20

    ImageMagick png为svg图像大小

  21. 21

    将SVG转换为PNG时包括字体

  22. 22

    如何使用imagemagick转换缩放和裁剪?

  23. 23

    使用imagemagick将JPG图像从灰度转换为RGB

  24. 24

    无法使用PHP和ImageMagick将PDF转换为图像

  25. 25

    ImageMagick / Imagick:将具有Alpha通道的PNG转换为2色图像(彩色,透明)

  26. 26

    旋转时SVG图像元素被裁剪

  27. 27

    自动将SVG转换为Android可使用的PNG

  28. 28

    无法使用canvg将svg转换为png

  29. 29

    如何使用软件将PNG转换为SVG?

热门标签

归档