如何从System.Drawing.ImageFormat对象获取可读字符串(即图像格式本身)?
我的意思是,如果我有 ImageFormat.Png
,是否可以将其转换为“png”字符串?
编辑:我在这里看到一些误解。这是我的代码:
Image objImage = Image.FromStream(file);
ImageFormat imFormat = objImage.RawFormat;
imFormat.ToString();
它返回“
[ImageFormat: b96b3caf-0728-11d3-9d7b-0000f81ef32e]
”,但我想要“Png
”! 最佳答案
ImageFormat.Png.ToString()
返回“Png” ...
编辑:好的,看来ToString
仅返回静态属性返回的ImageFormat
实例的名称...
您可以创建一个查找字典来从Guid中获取名称:
private static readonly Dictionary<Guid, string> _knownImageFormats =
(from p in typeof(ImageFormat).GetProperties(BindingFlags.Static | BindingFlags.Public)
where p.PropertyType == typeof(ImageFormat)
let value = (ImageFormat)p.GetValue(null, null)
select new { Guid = value.Guid, Name = value.ToString() })
.ToDictionary(p => p.Guid, p => p.Name);
static string GetImageFormatName(ImageFormat format)
{
string name;
if (_knownImageFormats.TryGetValue(format.Guid, out name))
return name;
return null;
}