我用image.FromFile()生成了image, 但无论原图形文件是JPEG还是Bitmap,生成的Image中的ImageType属性均为Bitmap.
Image的RawFormat属性不会用。请问用Image是否可以实现判断原始图形文件格式的功能,如何做呢?
如果Image无法实现这个功能,那又有什么其他的方法呢?谢谢

解决方案 »

  1.   

    postedFile,你上传的文件
    ////////////////////////////////////////////////////////////////////
    if (postedFile.ContentType.ToString().ToLower().IndexOf("image") < 0) 

    strrow="格式无效";
    continue;
    } ====================================================
    private System.Drawing.Imaging.ImageFormat GetImageType(object strContentType) 

    if ((strContentType.ToString().ToLower()) == "image/pjpeg") 

    return System.Drawing.Imaging.ImageFormat.Jpeg; 

    else if ((strContentType.ToString().ToLower()) == "image/gif") 

    return System.Drawing.Imaging.ImageFormat.Gif; 

    else if ((strContentType.ToString().ToLower()) == "image/bmp") 

    return System.Drawing.Imaging.ImageFormat.Bmp; 

    else if ((strContentType.ToString().ToLower()) == "image/tiff") 

    return System.Drawing.Imaging.ImageFormat.Tiff; 

    else if ((strContentType.ToString().ToLower()) == "image/x-icon") 

    return System.Drawing.Imaging.ImageFormat.Icon; 

    else if ((strContentType.ToString().ToLower()) == "image/x-png") 

    return System.Drawing.Imaging.ImageFormat.Png; 

    else if ((strContentType.ToString().ToLower()) == "image/x-emf") 

    return System.Drawing.Imaging.ImageFormat.Emf; 

    else if ((strContentType.ToString().ToLower()) == "image/x-exif") 

    return System.Drawing.Imaging.ImageFormat.Exif; 

    else if ((strContentType.ToString().ToLower()) == "image/x-wmf") 

    return System.Drawing.Imaging.ImageFormat.Wmf; 

    else 

    return System.Drawing.Imaging.ImageFormat.MemoryBmp; 

    }
    ====================================================================
    关键一句:
    upimage.Save(newpath,GetImageType(postedFile.ContentType));
      

  2.   

    我的文件是本地的文件,或者是用XML文件用base64传来的
      

  3.   

    我知道可以通过分析文件头来解决,其实也不麻烦,但是.NET中真的没有别的方法吗?
      

  4.   

    Image.RawFormat属性返回ImageFormat 对象,表示此 Image 对象的格式
      

  5.   

    谢谢!
    原来想过RawFormat, 但一直不知道怎么用。现在知道了,
    我原来用的是
    if( image.RawFormat == System.Drawing.Image.ImageFormat.Jpeg )
    {
    ....
    }
    总是不对。
    刚刚试过
    if( image.RawFormat.equals( System.Drawing.Image.ImageFormat.Jpeg ) )
    {
    ..........
    }
    就可以了。