How to validate image file format in C#

2019-01-24 20:07发布

问题:

Does anyone know the script to validate what the file format is for a given image. Currently i am populating an image object, looking at it's height, width, and resolution. I don't see any specific properties off of this object that explains the file format.

I would like to check for jpg, AI, PSD, High Jes Jpg, Bitmap, and Tiff.

here is my current script:

        protected bool IsValidImage(HttpPostedFileBase file, string fileName) {

        //verify that the image is no more than 648 wide and 648 pixels tall
        Image imgPhoto = Image.FromStream(file.InputStream);
        if (imgPhoto.Width > 648)
            return false;
        if (imgPhoto.Height > 648)
            return false;
        if (imgPhoto.HorizontalResolution != 72 || imgPhoto.VerticalResolution != 72)
            return false;
        return true;

    }

Thanks in advance

回答1:

Use Image.RawFormat. The result is an instance of the ImageFormat class which can be compared against the static properties of ImageFormat.

See the ImageFormat class properties for more details.



回答2:

public bool validateImage(byte[] bytes)
{
  try 
{
 Stream stream = new MemoryStream(bytes);
 using(Image img = Image.FromStream(stream))
 {
   if (img.RawFormat.Equals(ImageFormat.Bmp) ||
       img.RawFormat.Equals(ImageFormat.Gif) ||
       img.RawFormat.Equals(ImageFormat.Jpeg) ||
       img.RawFormat.Equals(ImageFormat.Png))
     return true;
 }
 return false;
} 
catch
{
 return false;
}

}



回答3:

You can visit Wotsit to find out the magic bytes used as a marker in the beginning of the file. Click on the 'Graphics File' to see the list of file formats..



回答4:

What about:

bool isJpeg = imgPhoto.RawFormat.Equals(Imaging.ImageFormat.Jpeg);