有点背景来设置场景:我们告诉客户他可以向我们提供任何类型的图像,我们会将它们放在他的报告中。我刚刚快速完成了这项工作,发现报告(以及我和他们之间的其他事情)都只是为了使用SVG。
当我在网上发现你可以使用免费工具将图像从jpg或PNG转换为SVG时,我认为我已经打动了金牌但是我还没有成功地将SVG存储为DB中的字节一种格式,允许我在阅读后再次使用它。
以下是导致我出现问题的快速时间表。
我想我可能只是指出了一些非常基本但没有点击过的东西。
有人可以告诉我我做了什么,这意味着我的字节没有以正确的编码/格式存储吗?
当我在Notepad ++中打开我的新SVG时,我可以看到内容包括以下可能相关的内容:
<image width="900" height="401" xLink:href="data:image/png;base64,
(基础64编码数据跟随600多行)
以下是将我的SVG转换为要存储在DB中的字节的代码的大脑:
var bytes = File.ReadAllBytes(file);
using (var fs = new StreamWriter(file + ".txt"))
{
foreach (var item in bytes)
{
fs.Write(String.Format("{0:X2}",item));
}
}
任何帮助表示感谢。
干杯
答案 0 :(得分:2)
两件事:
SVG是矢量图像,而不是位图文件。所有在线工具都在做JPEG并创建一个嵌入了JPEG的SVG文件。你并没有真正获得真正的SVG图像的好处。如果你意识到并明白这一点,那就不用担心了。
SVG文件只是文本。从理论上讲,没有理由只能将它们作为字符串存储在数据库中。只要列足够大。但是,通常如果要将非结构化文件存储在db中,则要使用的首选列类型为&#34; Blob&#34;。
http://technet.microsoft.com/en-us/library/bb895234.aspx
将SVG文件转换为十六进制只会使速度变慢,文件大小加倍。此外,当您转换回来时,您必须非常小心您正在使用的字符串编码。事实上,这听起来像你遇到的问题。
答案 1 :(得分:1)
我怀疑你做错了。 SVG是简单的XML based vector图像格式。我猜您的应用程序可能正在使用SVG image element,您需要将您的png图像转换为base64编码的字符串。