在.NET中提取有关PNG的图像信息

时间:2010-05-05 11:51:46

标签: c# image metadata

我正在尝试获取有关PNG文件的信息,但我还没有找到一个全面的网站来帮助我。

这些是我所拥有的一些半有用的代码片段:

Bitmap bmp = new Bitmap(pngFileName);
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly,PixelFormat.Format48bppRgb);

Stream imageStreamSource = new FileStream(pngFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
var decoder = new PngBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);

BitmapSource bitmapSource = decoder.Frames[0];

通过这些,我已经能够获得图像的高度和宽度。但是我仍然需要发现以下信息:

  • 是否进行了RLE编码?
  • 是原生视频格式吗?
  • 是否已旋转?
  • 是否使用灰度调色板?
  • 它有透明度吗?
  • 是RGB还是BGR?

我真的很感激关于如何实现这一点的一些指示或链接到处理这个问题的好文章。我们正在使用.NET 4.0

1 个答案:

答案 0 :(得分:1)

我不确定这对你有帮助,但到目前为止我看到的最好的方法是在循环中逐个像素地移动图像并完成不同的任务。

请参阅以下答案以获取示例: