问题标签 [libtiff.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
77 浏览

libtiff.net - libtiff.net Group3Opt.FILLBITS 未填充到字节边界

我正在使用 libtiff.net 库使用以下标签对来自 twain 投诉扫描器的字节进行编码。

扫描仪设置

Tiff 设置

我遇到的问题是_tiffOutput.SetField(TiffTag.GROUP4OPTIONS, Group3Opt.FILLBITS);它没有填充到字节边界,根据 https://bitmiracle.github.io/libtiff.net/html/e00d6851-cf09-287f-638b-fc62c498351a.htmhttps:/ /bitmiracle.github.io/libtiff.net/html/004b29cb-3828-19ac-b924-95671b477f08.htm

图像在查看时正确显示并且没有产生错误。我还使用 AWare Systems TiffTagViewer 来验证处理后的 tiff 图像。Compression[Group 4 Fax (CCITTFAX4)] 和 Group4Options[4 (FILLBITS)] 已被验证正确,但 ImageWidth 和 ImageLength 不在字节边界上。

谁能看到我错过了什么?

0 投票
3 回答
3012 浏览

c# - 使用 LibTIFF.NET C# 将具有浮点像素值的 32 位灰度 Tiff 数组

我刚开始在我的 c# 应用程序中使用 LibTIFF.NET 来读取 Tiff 图像作为从 ArcGIS 服务器获得的高度图。我只需要使用图像的像素值填充一个数组,以便基于平滑渐变生成地形。该图像是 LZW 压缩的 32 位灰度 Tiff,其浮点像素值以米为单位表示高度。

现在已经有几天了,我努力返回正确的值,但我得到的只是“0”值,假设它是一个完全黑色或白色的图像!

这是到目前为止的代码:(更新 - 阅读更新 1)

示例文件和结果:http ://terraunity.com/SampleElevationTiff_Results.zip

已经在互联网上到处搜索,找不到针对此特定问题的解决方案。所以我真的很感激帮助,这也使它对其他人有用。

更新1:

根据Antti Leppänen的回答更改了代码,但得到了奇怪的结果,这似乎是一个错误,或者我错过了什么?请在此处查看上传的 zip 文件以使用新的 32x32 tiff 图像查看结果:

http://terraunity.com/SampleElevationTiff_Results.zip

结果:

  • LZW 压缩:RawStripSize = ArraySize = 3081 = 55x55 网格
  • 未压缩:RawStripSize = ArraySize = 65536 = 256x256 网格

必须是: RawStripSize = ArraySize = 4096 = 32x32 网格

正如您所看到的结果,LibTIFF 会跳过一些行并给出不相关的排序,如果图像大小不是 2 的幂,它甚至会变得更糟!

0 投票
0 回答
219 浏览

jpeg - TIFF 204x98 DPI 屏幕尺寸

我有具有以下属性的 TIFF 页面(传真低分辨率 G4 CCITT.6):

当我在 tiff 查看器中查看时,图像还可以。当我将其转换为 JPEG 时,图像会被拉伸。只有 Windows 的“图像和传真查看器”显示正确的 TIFF 和 JPEG(未绘制女士) 以像素为单位计算宽度和高度以显示未拉伸图像的公式是什么?谢谢这是输出图像JPEG: 在此处输入图像描述


编辑:上传图片,网站将其转换为 96x96DPI 的 h&v 分辨率...

0 投票
1 回答
104 浏览

tags - LibTiff.net 没有设置主题标签

我正在尝试模仿一些生产代码来生成带有主题的 Tiff 以用于测试目的(Windows 中的 IE,右键单击,转到属性和详细信息选项卡有一个主题)。我们在主题字段中放置一些稍后需要参考的文本。我们使用的字段是 0x9c9f,据我所知是(Windows 使用的主题标签,在 UCS2 中编码)

这是我用来生成标签的代码

基本上,标签(代码明智)似乎在 tiff 中,但 Windows 属性对话框从不显示它。需要什么特别的东西来实现这个吗?

0 投票
1 回答
2532 浏览

c# - 将每样本 8 位转换为每样本图像 1 位

每个样本图像灰度我有 8 位。我想使用 Libtiff.net 对其进行转换:

如何将 8 位数组转换为 1 位数组图像?我想在不将字节数组转换为位图对象的情况下做到这一点。什么是正确的方法?谢谢

0 投票
0 回答
1019 浏览

c# - TIFF 文件中的负灰度值为白色

我正在使用 BitMiracle 的 LibTiff.NET 库来处理一些 TIFF 图像文件。我需要根据一个标准化公式转换每个像素的灰度值,这个公式会导致负像素值。

我将 Sampleformat TIFF 标签更改为:

但所有负灰度值在生成的图像中都显示为亮白色。

如果我通过添加最低灰度值的倒数来抵消所有值,那么图像是正确的。

我究竟做错了什么?完整代码:

0 投票
1 回答
1146 浏览

c# - 为什么 Tiff.Open 方法总是返回 NULL 而不打开 tiff 文件?

概述:

我有一个问题,即一百台 PC 中的一台刚开始遇到 LibTiff 库问题,不想打开我的任何 tiff 图像。我怀疑它与已更改的依赖文件有关。我以前见过这个问题,但不记得我是如何解决这个问题的(我想我用另一台工作的 PC 上的一些 dll 文件替换了一些 dll 文件)。我尝试使用 Dependency Walker 来确定 LibTiff.Net dll 使用了哪些文件,但无法让 Dependency Walker 工作,它只是在打开一堆 dll 时出错。

问题:

是否有可能知道为什么文件没有被成功打开?所有方法都是返回 NULL,有没有办法得到某种类型的错误?我知道文件没有锁定(重新启动,并检查了其他方式)。我知道 tiff 文件很好,没有问题(将它们复制到另一台使用相同软件的 PC 上,它读取得很好)。我可以使用“GetLastError”之类的东西来返回 Open 方法返回 Null 的原因吗?

这是我目前的用法:

0 投票
0 回答
659 浏览

c# - 使用扫描线将 TIFF 转换为位图

我正在尝试使用 libtiffdotnet 处理 TIFF 文件。我需要将 TIF 转换为 System.Bitmap。文档中有一个关于如何完成的示例。但是这种方法在大型 TIFF 文件上需要很长时间。所以我试图获取原始 TIFF 的扫描线并写入位图。这是我正在使用的代码

}

Input.tiff: 在此处输入图片描述

Output.png : 在此处输入图片描述

我想知道它应该如何实际完成,我做错了什么。

0 投票
1 回答
176 浏览

c# - TiffCP 进程不会关闭

我创建了一个 Windows 服务项目,它将使用 TiffCP exe 将找到的任何 tiff 文件拆分为多个 tiff 文件。我正在使用网站上作为示例给出的代码:

这按预期工作并拆分文件。但是,创建了一个进程 (MSPVIEW.EXE),我无法访问该文件,因为它正在另一个程序中进行编辑。我必须手动终止进程才能访问它。我也尝试将进程创建为变量,然后尝试关闭或终止它,但这似乎也不起作用。有任何想法吗?谢谢。

编辑:我已经在再次访问该进程之前放置了这段代码,并且当服务停止并且它似乎可以解决问题时。它有效,但我想知道是否有更好的方法。

0 投票
0 回答
1036 浏览

c# - 生成 TIFF 时如何控制 TIFF 图像标题的第一个 IFD 偏移值?

我想知道有没有办法控制存储第一个值byte data的图像标题中的 4。TIFFIFD offset

我有一种情况,当我扫描三个不同的图像并直接存储到文件系统中时,它带有值[4949 002A 00000080](十六进制)

但是,使用libTiff .net api时,当我将所有三个图像组合并创建一个时TIFF,标头中的最后四个字节带有随机值,即 1st IFD offset

我有一个要求,第一个IFD offset应该是00000080。我正在使用带有libTiff.net api 的 C# 来生成TIFF.

请找到snippet代码:下面的代码使用捕获的图像创建一个 Tiff 文件:

front.tif、gray.tif 和rear.tif 具有正确的标题数据。[4949 002A 00000080](十六进制)

下面的代码使用 libTiff.net api 绑定所有图像并创建单个 tiff 图像。

一旦创建了三页的 TIFF 图像,标题值就会不一致。 [4949 002A 0003B210] (hex)

[更新 1]

Stackoverflow 回答output.CheckpointDirectory();描述了在将任何数据写入文件之前调用。我也尝试了该方法并发现,现在标头的最后四个字节已更改,并且始终相同,不像之前它始终是随机的。现在我得到00000010

谢谢