tags:

views:

289

answers:

3

Hello Everyone, 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

+3  A: 

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

See http://msdn.microsoft.com/en-us/library/system.drawing.imaging.imageformat_members.aspx for more details.

codekaizen
How can you tell from the ImageFormat GUID that the image type is PSD or AI?
Billy Logan
BTW, thank you for your answer. It was right on. Just need to test the PSD and AI formats.
Billy Logan
@Billy - have you considered using Windows Imaging Components (WIC). I'm more positive that you can use codecs to decode a file format in that case, and WIC is server-friendly, whereas GDI is not.
codekaizen
No, i am not extremely familar with GDI or imaging objects in the first place. Don't have to deal with them much. Will check it out though. Thank you for your quick responses.
Billy Logan
A: 

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.

Hope this helps, Best regards, Tom.

tommieb75
CodeKaizen's answer is pretty good...+1 from me...did not know about that...Thanks! :)
tommieb75
A: 

What about:

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