C#ImageFormat为字符串

时间:2011-12-13 13:02:16

标签: c# image

如何从 System.Drawing.ImageFormat 对象获取人类可读字符串(即图像格式本身)?

我的意思是,如果我有 ImageFormat.Png 可以将其转换为“png”字符串吗?

编辑:我在这里看到一些误解。这是我的代码:

Image objImage = Image.FromStream(file);

ImageFormat imFormat = objImage.RawFormat;

imFormat.ToString(); 

返回“[ImageFormat: b96b3caf-0728-11d3-9d7b-0000f81ef32e]”,但我想要“Png”!

4 个答案:

答案 0 :(得分:26)

使用System.Drawing命名空间中的ImageFormatConverter类:

this.imageInfoLabel.Text = 
    new ImageFormatConverter().ConvertToString(this.Image.RawFormat);

对于PNG图像,它返回 Png ,依此类推。

答案 1 :(得分:9)

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;
}

答案 2 :(得分:0)

ImageFormat值由Guid识别,您需要创建自己的Guid地图 - &gt;名称

var dict = (
    from t in typeof(ImageFormat).GetProperties()
    where t.PropertyType == typeof(ImageFormat)
    let v = (ImageFormat)t.GetValue(null, new object[0])
    select new { v.Guid, t.Name }
    ).ToDictionary(g => g.Guid, g => g.Name);

string name;
if (dict.TryGetValue(ImageFormat.Png.Guid, out name))
{
    Console.WriteLine(name);
}

答案 3 :(得分:-1)

没有那么多图像格式。因此,如果您想自己指定描述或只使用

,可以使用开关
Imageformat.Specific.ToString()

(具体是特定图像格式的名称)