cha*_*ama 2 image file image-processing
我正在尝试读取一个 TIFF 文件,该文件有一个与之关联的 ANN 文件。这场争执不会向标准观众开放。当我打开二进制 ANN 文件时,我唯一能理解的就是它是使用 Pixel Translations Inc. 的软件以 PIXTIFF 格式创建的。
有谁知道如何手动或以编程方式查看此文件?有没有可以用作查看器的免费软件?
谢谢!
小智 5
为了充分披露,我是 Atalasoft 的员工。
由于这篇文章,我们有一家公司联系我们,我想帮助尽可能多的可能遇到同样问题的人。
该公司拥有内部识别为 PIXTIFF 的文件。存在的特定字符串是“Pixel Translations Inc.,PIXTIFF Version”和版本号。然而,这些文件在 tiff 标头之前有几百个字节,这使得它们无法在标准查看器中打开。
在寻找有效的 tiff 时,我确实找到了另一组文件,以供参考已经可以使用的 tiff 的相同 PIXTIFF 字符串。我不能说是否有人已经“修复”了它们,或者是否是非标准流程创建了这家公司的设置。
因此,如果您确实发现有这些 PIXTIFF 二进制文件,请先检查它们是否是有效的 tiff,然后再继续。制作一个副本,为其指定 .tif 扩展名,然后使用IrfanView之类的工具尝试打开它。
查看Tiff 标头规范:Tiff 文件以 II* (0x49 0x49 0x2A 0x00) 或 MM* (0x4D 0x4D 0x2A 0x00) 开头,然后是从文件开头到第一个图像目录的偏移量。(尽管根据我的经验,大端 MM 顺序很少见。)
可以通过删除 tiff 标头之前的所有数据来修复有问题的文件。相对于 tiff 标头的偏移量已经是正确的。
我提供了一个快速的 C# 示例,展示了我在本地执行此操作的方法。用您选择的语言来实现这一点应该非常简单。
注意:Stream.CopyTo 仅在 .Net 4.0 及更高版本中可用。这也只纠正了两个可能的标头之一,但它确实修复了手头的所有文件。
byte[] header = { 0x49, 0x49, 0x2A, 0x00 };
int found = 0;
string filename = @"fileToFix";
using (Stream fileToFix = File.OpenRead(filename))
{
while (found < 4 && fileToFix.Position < fileToFix.Length)
{
if (header[found] == fileToFix.ReadByte())
found++;
else
found = 0;
}
if (found != 4) //Didn't find a tiff.
return;
fileToFix.Seek(-4, SeekOrigin.Current); //We're already 4 bytes in the the header, go back.
using (Stream fixedFile = File.OpenWrite(Path.Combine(Path.GetDirectoryName(filename), Path.GetFileNameWithoutExtension(filename) + ".fixed.tif"))) //Same directory, same name but ending in .fixed.tif.
fileToFix.CopyTo(fixedFile);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |