将TIFF、PNG或JPEG转换为SVG的Java API

4

我需要将TIFF或PNG或JPEG转换为SVG,是否可以进行转换呢?将PNG/TIFF/JPEG转换为SVG,有没有可能减小文件大小呢?


请转到https://dev59.com/DXI-5IYBdhLWcg3wbHu-。 - Erik Dahlström
如果原始图片不是矢量化的向量图像,它就不会减小尺寸。如果PNG(或类似格式)使用高分辨率的简单平面形状,那么它将减小尺寸(但PNG已经相当好地压缩了平面表面)。 - Xenos
3个回答

3

Imagetracer是一个免费且开源的(公共领域)库和应用程序,可能会很有用。免责声明:这是我制作的。

从以下网址获取ImageTracer.jar

https://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通常比输入图像更大。


1

看看Batik:

http://xmlgraphics.apache.org/batik/

听起来它应该至少满足您的大部分要求。如果Batik不支持某些格式,您可以随时获取其他库将其读入到一些“标准”位图格式中,然后使用Batik将其转换为SVG。


0
你想把光栅图像放在SVG容器中吗?还是想将光栅图像转换为矢量图像?如果是后者,那么这不是一个简单的问题,但你可以使用一个追踪库来完成。不能保证文件大小会减小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接