尽管.BMP扩展,确定图像是否为PNG

时间:2013-06-03 20:20:18

标签: c# image

我想检查目录中的图片是否为png类型但扩展名为.bmp。以下内容确定是否为.bmp扩展名

 string x = Path.GetExtension(file);

由此我们确定其扩展名为.bmp。现在问题在于检查它是否是png格式。我被困在这一部分。

我这样做的原因是因为我希望我的图像透明,而.bmp图像不能很好地工作。 谢谢!

4 个答案:

答案 0 :(得分:10)

上述答案不正确,代码应为:

var header = new byte[4];
using (var fs = new FileStream(filename))
{
    fs.Read(header, 0, 4);
}

var strHeader = Encoding.ASCII.GetString(header);
return strHeader.ToLower().EndsWith("png");

答案 1 :(得分:0)

我们可以使用此

检查文件扩展名
 Byte[] imageBase64 = ....

 var encodedFile = Encoding.ASCII.GetString(imageBase64);
 return encodedFile.ToLower().StartsWith("?png", StringComparison.InvariantCultureIgnoreCase);

答案 2 :(得分:0)

这是我个人喜欢的另一种做法,因为您不必使用String(使用System.Drawing Library)检查字符串。

using (var fs = new FileStream(filename))
{
    var fsImage = System.Drawing.Image.FromStream(fs);
    if (fsImage.RawFormat == System.Drawing.Imaging.ImageFormat.Jpeg)
    {
       // Do something with Jpegs
    }
    else if (fsImage.RawFormat == System.Drawing.Imaging.ImageFormat.Png)
    {
       // Do something with Pngs
    }
}

答案 3 :(得分:-1)

读取文件的前4个字节:

byte[] b = new byte[4];
using (var fs = new FileStream(filename))
{
    fs.Read(b, 0, 4);
}
if (b.ToString().Contains("PNG"))
{
    // this is a png file
}