3

我想检查目录中的图像是否为 png 类型但扩展名为.bmp. 下面判断是否为.bmp扩展

 string x = Path.GetExtension(file);

由此我们确定它的外延是.bmp。现在问题在于检查它是否为 png 格式。我被困在这部分。

我这样做的原因是因为我想让我的图像透明,而 .bmp 图像不能很好地处理它。谢谢!

4

4 回答 4

11

上面的答案不正确,代码应该是:

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");
于 2014-06-03T03:36:53.210 回答
0

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

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
    }
}
于 2020-05-18T19:56:25.367 回答
0

我们可以用这个检查文件扩展名

 Byte[] imageBase64 = ....

 var encodedFile = Encoding.ASCII.GetString(imageBase64);
 return encodedFile.ToLower().StartsWith("?png", StringComparison.InvariantCultureIgnoreCase);
于 2017-06-06T20:31:42.683 回答
-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
}
于 2013-06-03T20:31:24.293 回答