在.NET中打开巨大的TIF并将部件复制到新图像

JWo*_*ood 14 .net c# tiff image-processing libtiff.net

我正在寻找一个可以打开和复制大型TIFF文件部分的库.我查看了LibTiff.Net,它可以非常快速地打开文件,但它没有任何用于裁剪或复制图像部分的功能.我的图像向上是100,000 x 100,000像素,并且创建System.Drawing.Bitmap该尺寸会使应用程序崩溃,因此转换为Bitmap第一个不是一个选项.

任何人都可以推荐.NET库吗?

Bob*_*sky 6

如果您的文件在磁盘上小于4GB ,我建议您再看一下LibTiff.Net.即使有这么大的图像你也有一些选择.

首先,检查您的图像是平铺还是剥离.Tiff.IsTiled方法会给你答案.

如果您的图像是平铺的,那么您可能不应该使用ReadScanline方法读取它.ReadEncodedTile在这种情况下使用方法可能更好.

如果您的图像被剥离,那么您可以使用ReadScanlineReadEncodedStrip方法来阅读它.

如果你想使用的东西System.Drawing.Bitmap比尝试使用ReadRGBATileReadRGBAStrip.这些方法可用于从图像的某些部分创建位图.没有这样的示例,但将颜色TIFF转换为32位System.Drawing.Bitmap应该为您提供有关如何将图像的图块或条带转换为位图的几乎所有必需信息.

编辑:

LibTiff.Net 2.4.508增加了对BigTiff的支持,因此也支持大于4GB的文件.


Cha*_*esB 5

您的图像必须采用BigTIFF格式,因为普通TIFF不能大于4 GB.

可以使用libtiff的修改版本(在BigTIFF网站中提供)读取BigTIFF,该库允许以您希望的方式处理此类图像,而无需在内存中加载所有像素数据.

我没有看到.NET的绑定,但它不应该太长.