【发布时间】:2012-02-17 04:39:19
【问题描述】:
我需要将 TIFF 或 PNG 或 JPEG 转换为 SVG。是否可以转换为 SVG。通过将 PNG/TIFF/JPEG 转换为 SVG,是否有机会减小尺寸?
【问题讨论】:
-
如果原始图片不是重新栅格化的矢量图像,它不会减小大小。如果 PNG(或其他)使用高分辨率的简单平面形式,那么是的,它会减小尺寸(但 PNG 已经很好地压缩平面)
我需要将 TIFF 或 PNG 或 JPEG 转换为 SVG。是否可以转换为 SVG。通过将 PNG/TIFF/JPEG 转换为 SVG,是否有机会减小尺寸?
【问题讨论】:
Imagetracer 是一个免费的开源(公共领域)库和应用程序,可能很有用。免责声明:这是我做的。
从
获取ImageTracer.jarhttps://github.com/jankovicsandras/imagetracerjava
然后您可以像这样从 CLI 中使用它:
java -jar ImageTracer.jar input.png outfilename output.svg ltres 1 qtres 1 pathomit 16 colorsampling 1 numberofcolors 4 mincolorratio 0.02 colorquantcycles 3 scale 0.5 simplifytolerance 0 roundcoords 0 desc 0 blurradius 5 blurdelta 20
从输入图像中得到一个分色后的 SVG,它也被缩小到原始大小的一半。
光栅到矢量的转换通常不会自行减小文件大小,尤其是 SVG 输出,因为 SVG 是一种基于 XML 的冗长文本格式,没有压缩。但这在很大程度上取决于输入图像:保存为 BMP 的具有几百万像素分辨率的简单黑白徽标可能会从兆字节减少到千字节,但彩色 JPEG 照片可能会从几十千字节到兆字节的 SVG 输出。
您也可以使用 Inkscape(或 Potrace)对此进行测试:结果 SVG 通常比输入图像大。
【讨论】:
看看蜡染:
http://xmlgraphics.apache.org/batik/
听起来它应该至少可以满足您的大部分要求。如果 Batik 不支持某些格式,您可以随时获取额外的库将其读取为某种“标准”位图格式,然后使用 Batik 将其转换为 SVG。
【讨论】:
您想将光栅图像包装在 SVG 容器中,还是想将光栅跟踪到矢量?如果是后者,那么这不是一个简单的问题,但是您可以使用跟踪库来执行此操作。不保证文件大小会减小。
【讨论】: