Tag: libtiff.net

使用LibTiff.Net 2.3库时,如何让StripOffsets标记保持不变?

我有一个原始图像,其标签为StripOffsets = 768.当我在内存中编辑图像然后将其写回文件时,我尝试将StripOffsets标记手动设置为原始的相同值768(使用以下方法)。 //Set the height for the page output.SetField(TiffTag.ROWSPERSTRIP, ttPage[i].Height); //Set the offset for the page output.SetField(TiffTag.STRIPOFFSETS, ttPage[i].StripOffset); 由于某种原因,最终结果是StripOffsets = 8.为什么不按照我想要的方式设置StripOffsets? 另外一点也会影响我在AWare Systems AsTiffTagViewer中显示的“页面偏移量”。 我确信这与同样的问题有关。 不知怎的,我没有正确保存tiff。 也许我无法手动设置“StripOffsets”标签并自动设置? 看下面我的例子…… 来自AsTiffTagViewer http://sofzh.miximages.com/c%23/2nqe3nt.png的结果

LibTiff.NET ReadDirectory仅在unit testing期间提供System.ObjectDisposedException

编辑:对于未来读者的FYI,这个问题已经修复,从BitMiracle的LibTiff.NET版本2.3.606.0开始。 我在我的C#库(在.NET 3.5 | x86中编译)中使用BitMiracle的LibTiff.NET(版本2.3.605.0及更低版本)并在调用ReadDirectory时不断收到此exception: System.ObjectDisposedException: Cannot write to a closed TextWriter 我意识到这似乎表明我在打电话之前已经处理了我的图像……但我没有特别这样做。 这是图书馆里的一个错误,还是我真的错过了什么? 这是我的代码: public static bool IsTiffBiTonal(String tiffFilePath) { VerifyFileExistence(tiffFilePath); using (Tiff tiff = Tiff.Open(tiffFilePath, “r”)) { do { if (tiff.GetField(TiffTag.BITSPERSAMPLE)[0].ToInt() == 1) { continue; } return false; } while (tiff.ReadDirectory()); //Error occurs here } return true; } 编辑:好的,经过一些进一步的测试后我得到了更多信息,这只是在我运行我的unit testing时才发生的! 不知道为什么会改变任何东西。

如何在Silverlight图像控件上显示TIFF(以字节的forms)

我创建了一个窗口服务,将所有TIFF文件放入数据库并将其存储为Byte[] 。 现在我希望能够通过Silverlight Image控件显示它们 因此我在绑定XAML时使用Converter以将Byte[]转换为Bitmap因为Image.Source只接受eitheir URI(我没有将文件存储在服务器上,所以不能使用此方法)或Bitmap 。 BitmapImage bmi = new BitmapImage(); if (value != null) { ImageGallery imageGallery = value as ImageGallery; byte[] imageContent = imageGallery.ImageContent; string imageType = imageGallery.ImageType; using (MemoryStream ms = new MemoryStream(imageContent)) { bmi.SetSource(ms); } } return bmi; 但是,我在bmi.SetSource(ms)处获得exception,因为Silverlight仅支持JPEG和PNG图像。 所以我做了更多的研究,并知道我应该将TIFF的字节转换为JPEG或PNG的字节然后它将工作。 为此,我尝试了两种方法: 在服务器上进行转换:在我的RIA服务调用中,在检索ImageGallery ,我遍历可用图像以将TIFF的字节转换为JPEG的字节。 但它不工作….你能告诉我哪里做错了吗? public IQueryable GetImageGalleries() { var imageGalleries […]

将TIFF转换为1位

我写了一个桌面应用程序,它将8位TIFF转换为1位,但输出文件无法在Photoshop(或其他图形软件)中打开。 该应用程序的作用是什么 它迭代原始图像的每8个字节(每个像素1个字节) 然后将每个值转换为bool(所以0或1) 在一个字节中保存每8个像素 – 字节中的位与原始图像中的像素的顺序相同 我设置的TIFF标签:MINISBLACK,压缩为NONE,填充顺序为MSB2LSB,平面配置是连续的。 我正在使用BitMiracle的LibTiff.NET来读取和写入文件。 流行的软件无法打开输出我做错了什么? 输入图片: http : //www.filedropper.com/input 输出图片: http : //www.filedropper.com/output

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

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

使用C#中的LibTiff(访问平铺的TIFF图像)

我想使用LibTiff来访问非常大的TIFF文件。 我需要多个页面和图块等function,所以LibTiff似乎是正确的方法。 任何人都可以帮助我如何使用C#中的LibTiff? 我找到了一些链接(比如blog.bee-ee ,其中包含部分代码。但是我不能超越一个版本。我看过FreeImage但发现它不合适(图片大约800 MPixel 8或16)位灰度 – > 800-1600 MByte)大小,我无法在32位环境中将其加载到内存中) 我在C / C ++方面很有经验,但还没有在C#中。 任何人都可以帮我一个包装或一些提示吗? 注意:我需要页面来访问tiff中的金字塔平面(多分辨率),以及256×256的图块,以便快速访问图像的不同部分而无需立即加载它。 [编辑] LibTIFF.NET解决方案对我来说似乎最实用。 我现在正在将它集成到产品开发中,它可以让我从进出被管理内存中省去很多麻烦。 我还没有尝试过’回调’function,这似乎可以通过.net方式很好地解决。 感谢stackoverflow的帮助[/编辑]