在 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();
将流转换为 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
{
}
或者您可能只是检查缓冲区中的第一个字节是否为 <
,因为光栅图像格式不以该字符开头:
bool isSvg = img[0] == '<';
关于c# - 从 ByteString 识别光栅(jpg、png 等)或 svg 文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24774453/