【问题标题】:Black and white PNG to SVG黑白PNG转SVG
【发布时间】:2015-04-29 04:10:46
【问题描述】:

我有一个河流/土地面具来区分土地和河流/湖泊。此文件的大小为 (W)43,200x(H)21,600。

文件无法打开,因为 RAM 会立即填满。我已将文件拆分为 3600*3600 块,它们可以正常打开。但是我正在尝试在谷歌地图中将文件绘制在陆地上,覆盖图像时系统仍然会变慢。

我想知道是否有办法将 3600*3600 PNG 图像转换为 SVG,但只为黑白颜色之间的边界创建矢量。这在理论上会减小文件的大小。

我目前正在尝试制作 SVG 文件,但文件大小约为 1GB。它不会在 linux (eog) 中加载文件,并且在覆盖 Google 地图时不会加载。

任何帮助将不胜感激:)

【问题讨论】:

  • 酷!请给我们看一张图片。
  • 图片的文件类型是什么?在您声明的分辨率下,未压缩的灰度图像只有大约 933MB。因此,如果您的文件超过 1GB,那么我认为它必须是压缩的全彩色图像。如果是这样,使其大小易于管理的第一步是将其转换为黑白双色位图,这会将文件减少到大约 117MB。如果你压缩它,那么我预计它会减少到它的一小部分,可能是 20MB 或更少。然后你可以考虑使用 potrace 来追踪它。

标签: google-maps svg imagemagick png


【解决方案1】:

根据您的图像,您可以使用potraceImageMagick 执行此操作。假设您的初始图像是一个PNG 文件,如下所示:

您可以使用ImageMagick 将其转换为PBM 格式的图像,如potrace 首选,然后将其转换为SVG,如下所示:

convert river.png pbm:- | potrace - -s -o river.svg

SVG 文件大约是PNG 大小的一半。如果有人喜欢查看 SVG 文件,它看起来像这样:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
 width="3000.000000pt" height="2000.000000pt" viewBox="0 0 3000.000000 2000.000000"
 preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,2000.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M4554 16821 c-3 -3 -114 -6 -247 -7 -395 -4 -437 -5 -467 -14 -17 -5
-32 -5 -34 -1 -5 8 -136 8 -151 -1 -5 -3 -53 -6 -106 -6 -53 0 -113 -5 -135
-11 -21 -5 -76 -11 -121 -13 -46 -1 -83 -5 -83 -8 0 -8 -3 -8 -107 -14 -45 -3
-102 -10 -125 -17 -24 -7 -72 -13 -108 -15 -71 -3 -90 -7 -134 -23 -16 -7 -31
-9 -34 -6 -3 2 -11 0 -19 -6 -10 -9 -13 -8 -13 0 0 7 -4 10 -9 6 -5 -3 -31 -8
...
...
-63 -3 -164 -1 -197 4 -18 3 -35 2 -38 -3 -4 -7 -62 -6 -178 3 -21 1 -41 -1
-43 -5 -2 -3 -39 -4 -82 -1 -129 8 -152 8 -152 1 0 -4 -21 -5 -47 -3 -91 8
-135 10 -139 6z"/>
</g>
</svg>

【讨论】:

  • 这是一个了不起的人。但是河流是白色的而不是黑色的,我该如何改变呢?
  • 应该没什么区别,但是如果你想反转黑白,可以改成convert river.png -negate pbm:- ....
  • 邪恶的,我设法做到了。分辨率从 3600*3600 变为 4500*4500。我怎么能匹配这个?
  • 不确定……现在是英国的就寝时间。我明天早上再看看。您的图像的原始尺寸是多少,您可以发布它吗?尝试查看potrace 的帮助页面。另外,您使用的是 Mac OS X、Linu 还是 Windows?您可以运行identify -verbose YourRiverFile.pngidentify -verbose YourSVGFile.svg 并将结果粘贴到您的问题中吗?not as a Comment 但实际上是通过单击您的问题下方的edit。谢谢。
猜你喜欢
  • 2011-01-13
  • 2014-12-22
  • 2013-08-29
  • 1970-01-01
  • 2017-04-22
  • 2011-03-01
  • 2020-07-13
  • 2015-12-19
  • 2015-08-08
相关资源
最近更新 更多