How to validate image file format in C#
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:
protect开发者_JAVA技巧ed 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
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.
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;
}
}
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..
What about:
bool isJpeg = imgPhoto.RawFormat.Equals(Imaging.ImageFormat.Jpeg);
精彩评论