在 C# (.NET FW 4.5) 中,有没有办法了解字节串是否包含 .svg 文件或任何光栅文件?我使用这个程序:
[...]
byte[] img = System.Convert.FromBase64String(res);
ctrlImage = new BitmapImage();
ctrlImage.BeginInit();
MemoryStream ms = new MemoryStream(img);
ctrlImage.StreamSource = ms;
ctrlImage.EndInit();
Run Code Online (Sandbox Code Playgroud)
将流转换为BitmpatImage,但现在我需要验证是否res包含 svg 文件而不是光栅文件。
谢谢你。
SVG 文件格式基于 XML。因此,您可以尝试从图像缓冲区解码文本字符串并检查它是否以<?xml或开头<svg:
bool isSvg = false;
try
{
var text = Encoding.UTF8.GetString(img);
isSvg = text.StartsWith("<?xml ") || text.StartsWith("<svg ");
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
或者您可能只是检查缓冲区中的第一个字节是否为 a <,因为光栅图像格式不以该字符开头:
bool isSvg = img[0] == '<';
Run Code Online (Sandbox Code Playgroud)