所有,
我有一个标准的TIFF文件.我需要编写C#代码来读取TIFF文件的每个像素的数据.例如,我不知道数据在这个文件中的起始位置等等.有人可以指向一些我可以在C#中获取示例代码的链接.
感谢您的帮助!
解决方法
我建议使用
TiffBitmapDecoder课程.一旦创建了此类的实例,就可以访问Frames集合.此集合中的每个帧表示TIFF文件中单个图层的位图数据.您可以在各个帧上使用
CopyPixels方法来创建表示图像像素数据的字节数组.
更新:
namespace TiffExample { using System; using System.IO; using System.Windows.Media; using System.Windows.Media.Imaging; public static class Program { private const int bytesPerPixel = 4; // This constant must correspond with the pixel format of the converted bitmap. private static void Main() { var stream = File.Open("example.tif",FileMode.Open); var tiffDecoder = new TiffBitmapDecoder( stream,BitmapCreateOptions.PreservePixelFormat | BitmapCreateOptions.IgnoreImageCache,BitmapCacheOption.None); stream.dispose(); var firstFrame = tiffDecoder.Frames[0]; var convertedBitmap = new FormatConvertedBitmap(firstFrame,PixelFormats.Bgra32,null,0); var width = convertedBitmap.PixelWidth; var height = convertedBitmap.PixelHeight; var bytes = new byte[width * height * bytesPerPixel]; convertedBitmap.copyPixels(bytes,width * bytesPerPixel,0); Console.WriteLine(GetPixel(bytes,548,314,width)); Console.ReadKey(); } private static Color GetPixel(byte[] bgraBytes,int x,int y,int width) { var index = (y * (width * bytesPerPixel) + (x * bytesPerPixel)); return Color.FromArgb( bgraBytes[index + 3],bgraBytes[index + 2],bgraBytes[index + 1],bgraBytes[index]); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。