Feedback

ImageFormat eines System.Drawing.Image bestimmen

Sprache: C#

Diese Methode gibt das richtige System.Drawing.Imaging.ImageFormat eines Images zurück.
/// <summary>
/// Returns image format of a given image
/// </summary>
/// <param name="image">The image</param>
/// <returns>Image format of the given image</returns>
public static ImageFormat GetImageFormatFromImage(Image image)
{
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
        return System.Drawing.Imaging.ImageFormat.Jpeg;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
        return System.Drawing.Imaging.ImageFormat.Bmp;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
        return System.Drawing.Imaging.ImageFormat.Png;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
        return System.Drawing.Imaging.ImageFormat.Gif;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
        return System.Drawing.Imaging.ImageFormat.Emf;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Exif))
        return System.Drawing.Imaging.ImageFormat.Exif;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
        return System.Drawing.Imaging.ImageFormat.Icon;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.MemoryBmp))
        return System.Drawing.Imaging.ImageFormat.MemoryBmp;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
        return System.Drawing.Imaging.ImageFormat.Tiff;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Wmf))
        return System.Drawing.Imaging.ImageFormat.Wmf;

    throw new Exception("Image format not supported");
}
/// <summary>
/// Returns image format of a given image
/// </summary>
/// <param name="image">The image</param>
/// <returns>Image format of the given image</returns>
public static ImageFormat GetImageFormatFromImage(Image image)
{
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
        return System.Drawing.Imaging.ImageFormat.Jpeg;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
        return System.Drawing.Imaging.ImageFormat.Bmp;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
        return System.Drawing.Imaging.ImageFormat.Png;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
        return System.Drawing.Imaging.ImageFormat.Gif;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
        return System.Drawing.Imaging.ImageFormat.Emf;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Exif))
        return System.Drawing.Imaging.ImageFormat.Exif;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
        return System.Drawing.Imaging.ImageFormat.Icon;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.MemoryBmp))
        return System.Drawing.Imaging.ImageFormat.MemoryBmp;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
        return System.Drawing.Imaging.ImageFormat.Tiff;
    if (image.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Wmf))
        return System.Drawing.Imaging.ImageFormat.Wmf;

    throw new Exception("Image format not supported");
}

4 Kommentare

  1. jap; und im Standardfall hat sie gegenüber if() if() if() auch den Vorteil, dass sie bei einem gefundenen Element aufhört (else if geht dazu auch, ist aber langsammer). Hier ist das aber egal, wegen der return-Statements, weswegen der Rest ja eh ignoriert wird.

  2. Nein wäre es nicht! Switch funktioniert unter C# nicht mit Klasseninstanzen, was ImageFormat’s nunmal sind.

    Eine Alternative zum Übersetzen in die statischen Versionen wäre über Reflection.