Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将图像(JPG、BMP、GIF)转换为SVG_C#_Image Processing_Svg - Fatal编程技术网

C# 将图像(JPG、BMP、GIF)转换为SVG

C# 将图像(JPG、BMP、GIF)转换为SVG,c#,image-processing,svg,C#,Image Processing,Svg,任何人都知道一个支持彩色图像的工具(我尝试了几个,但没有一个有效)。如果有人知道如何实现这一点,或者知道任何构成(C#)的组件,我将不胜感激 谢谢你的帮助 下面的程序可以工作,但是,所有文件都是黑白的 将位图图形转换为矢量图形(例如,PNG到SVG)是一项非常简单的任务,没有简单的解决方案。用另一种方法——从矢量到位图的图形——当然是一个简单的渲染过程,如果您想要两种格式,通常都是这样做的 其核心是,这种转换需要复杂且容易出错的算法来分析图像中的模式。更复杂的图像根本不可能分解成矢量图形。技术

任何人都知道一个支持彩色图像的工具(我尝试了几个,但没有一个有效)。如果有人知道如何实现这一点,或者知道任何构成(C#)的组件,我将不胜感激

谢谢你的帮助


下面的程序可以工作,但是,所有文件都是黑白的


将位图图形转换为矢量图形(例如,PNG到SVG)是一项非常简单的任务,没有简单的解决方案。用另一种方法——从矢量到位图的图形——当然是一个简单的渲染过程,如果您想要两种格式,通常都是这样做的

其核心是,这种转换需要复杂且容易出错的算法来分析图像中的模式。更复杂的图像根本不可能分解成矢量图形。技术解释基于这样一个事实,即位图表示的精度保证高于矢量表示,这意味着在反转定义良好的矢量图形渲染过程时始终存在不确定性


为您的任务广泛使用的最佳程序可能是(共享软件)。如果这对你来说不起作用,那就不太可能有任何效果,当然你可能需要做很多调整才能获得好的效果。

这个过程被称为矢量化。它是将位图图像转换为矢量图像的过程。例如,有很多工具可以做到这一点,包括免费的

但这种处理的结果远远不够完美

希望这有帮助。也许我答错了,您需要将位图图像转换为矢量编程,或者您正在询问如何将位图图像嵌入SVG图像。

SVG是可缩放的矢量图形,这实际上意味着绘制线条。这种格式不利于显示基本上是像素矩阵的图像。线条可以很容易地转换为像素,但将像素显示为线条(或点)的效率极低,而且无法真正扩展。尝试在像素化图像中发现线条的替代方案充满了危险

如果您想要的只是恢复SVG格式的不可缩放图像,那么您可能会找到一个工具来实现这一点。但是,由于缩放是SVG的用途,我想确定您是否理解了为什么会有困难。

是目前为止我所知道的用于此任务的最佳工具。但是,您只能对有限数量的图像应用矢量化,之后您必须订阅或购买桌面版的许可证。

此链接包括工具、库、基于web的选项和其他诱人的内容


享受

我有一个专有的矢量绘图程序,可以将位图、JPEG、GIF和PNG保存为SVG格式。这是特定位图的输出svg文本文件

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg width="1024px" height="768px" version="1.1"
      xmlns="http://www.w3.org/2000/svg"
      xmlns:xlink= "http://www.w3.org/1999/xlink">
      <image xlink:href="C:\RedWind\Bitmaps\PrayerChild.bmp" 
                         x="20" y="20" width="384" height="428"/>
    </svg>

SVG文件是纯文本文件。您可以使用windows记事本、MS Word或任何文本文件创建者创建它们。
您可以复制此文本,将其放置在记事本中,将其保存到扩展名为“.SVG”的文件中,然后复制文件名,即“c:\bitmaps\MyBitmap.SVG”,并将其粘贴到浏览器的导航区域,它将在浏览器中生成SVG文件。请确保将位图的位置替换为“C:\RedWind\Bitmaps\rajerchild.bmp”。并将位图的位置和宽度/高度数据替换为x、y、width、height。我希望这有帮助

最好的开源矢量器之一是potrace。这是一个好消息。或者,如果您更喜欢GUI,它将作为一部分包含在您的应用程序中。这两种操作系统都可用于多个操作系统。

我发现它在简单位图图像上运行得非常好(免费工具)


[(非)免责声明:我与他们没有任何关系,只是在我需要一个快速工具来实现我正在研究的项目想法时找到了它。

你到底在寻找什么?JPG等是位图格式,而SVG是矢量格式。有一个根本的区别,转换是一个复杂的过程。定义“工作”。你想转换什么?显然,一张照片是行不通的。@Pekka只是想转换一张简单的图片,甚至更简单,3/4颜色,小到SVGformat@Simon布朗我转换了图像,但它们都是黑白相间的。不幸的是,这对我来说不是。不,图像远没有照片那么复杂。如果可以避免的话,不要自动这样做。试试下面推荐的一个矢量化程序。当然,尽管据我所知Inkscape在这方面做得不是特别好。一定比全黑效果好。简单的解决方案不是将输入文件的每个像素映射到相应(相对)位置的一个具有相同颜色的正方形吗?它在缩放时看起来像垃圾,就像缩放的jpeg一样,但它会工作,不是吗?当然,但你仍然有效地使用位图格式,只是在矢量格式的伪装下屏蔽它。当然,这并不能使图像自由伸缩,我相信你已经意识到。此外,这会使图像的大小是gif或jpg图像的很多倍,因为每个像素在矢量图像中都会有一个完整的节点。这不是一个真正可行的解决方案。看来Vector Magic不再是共享软件了(他们有一个试用软件;但从长远来看,他们想要美元。