我想检查目录中的图像是否为 png 类型但扩展名为.bmp
. 下面判断是否为.bmp
扩展
string x = Path.GetExtension(file);
由此我们确定它的外延是.bmp
。现在问题在于检查它是否为 png 格式。我被困在这部分。
我这样做的原因是因为我想让我的图像透明,而 .bmp 图像不能很好地处理它。谢谢!
上面的答案不正确,代码应该是:
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");
这是我个人喜欢的另一种方法,因为您不必检查字符串(使用 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
}
}
我们可以用这个检查文件扩展名
Byte[] imageBase64 = ....
var encodedFile = Encoding.ASCII.GetString(imageBase64);
return encodedFile.ToLower().StartsWith("?png", StringComparison.InvariantCultureIgnoreCase);
读取文件的前 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
}