读取tiff文件的尺寸和分辨率,而不先加载它
如何在不首先使用如下代码将内容加载到内存中的情况下读取tiff文件的尺寸(宽度和高度)和分辨率(水平和垂直)。 它对于大文件来说太慢了,我不需要操纵它们。
Image tif = Image.FromFile(@"C:large_size.tif"); float width = tif.PhysicalDimension.Width; float height = tif.PhysicalDimension.Height; float hresolution = tif.HorizontalResolution; float vresolution = tif.VerticalResolution; tif.Dispose();
编辑:
那些tiff文件是Bilevel,尺寸为30×42英寸。 文件大小约为1~2 MB。 所以上面的方法工作正常但速度慢。
自己进入这个并找到解决方案(可能在这里)。 使用validateImageData = false
Image.FromStream
允许您访问您正在查找的信息,而无需加载整个文件。
using(FileStream stream = new FileStream(@"C:large_size.tif", FileMode.Open, FileAccess.Read)) { using(Image tif = Image.FromStream(stream, false, false)) { float width = tif.PhysicalDimension.Width; float height = tif.PhysicalDimension.Height; float hresolution = tif.HorizontalResolution; float vresolution = tif.VerticalResolution; } }
据我所知,System.Drawing命名空间中的所有类在图像打开时立即加载图像数据。
我认为LibTiff.Net可以帮助您在不加载图像数据的情况下读取图像属性。 它是免费的开源(BSD许可证,适用于商业应用)。
以下是您的任务示例(为简洁起见,省略了错误检查):
using BitMiracle.LibTiff.Classic; namespace ReadTiffDimensions { class Program { static void Main(string[] args) { using (Tiff image = Tiff.Open(args[0], "r")) { FieldValue[] value = image.GetField(TiffTag.IMAGEWIDTH); int width = value[0].ToInt(); value = image.GetField(TiffTag.IMAGELENGTH); int height = value[0].ToInt(); value = image.GetField(TiffTag.XRESOLUTION); float dpiX = value[0].ToFloat(); value = image.GetField(TiffTag.YRESOLUTION); float dpiY = value[0].ToFloat(); } } } }
免责声明:我是图书馆的维护者之一。
试试这个 ,它似乎是你在寻找的。 之后跳过所有内容:
TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, ref w); //your width TIFFGetField(tif, TIFFTAG_IMAGELENGTH, ref h); //your height TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, ref bits); TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, ref samples);
不要忘记关闭后:
TIFFClose(tif);
我能想到的唯一方法是读取tiff二进制头文件。
您可以在此处下载规范: http : //partners.adobe.com/public/developer/tiff/index.html
以下是一些用于阅读可用于学习的Tiff的代码: http : //www.koders.com/csharp/fidF6632006F25B8E5B3BCC62D13076B38D71847929.aspx? s =缩放
我不久前创建了一个库来读取tiff头文件(以这两个资源为基础),但它是我雇主代码的一部分,所以我不能在这里发布我的代码,我可以说这不是很难。
我希望这有帮助。
上述就是C#学习教程:读取tiff文件的尺寸和分辨率,而不先加载它分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022327.html