我正在尝试读取一个与之关联的ANN文件的TIFF文件。 tiff不会与标准观众一起打开。当我打开二进制ANN文件时,我唯一可以理解的是它是用Pixel Translations Inc.的软件以PIXTIFF格式创建的。
有谁知道如何手动或以编程方式查看此文件?有没有可以作为观众使用的免费软件?
谢谢!
答案 0 :(得分:3)
为了充分披露,我是Atalasoft员工。
由于这篇文章,我们有一家公司接近我们,我想尽可能多的人帮助他们解决同样的问题。
该公司的文件内部标识为PIXTIFF。存在的特定字符串是“Pixel Translations Inc.,PIXTIFF Version”和版本号。但是,这些文件在tiff标头之前有几百个字节,这使得它们无法在标准查看器中打开。
我找到了另一组文件,同时查找有效的tiff以便使用已经正在运行tiff的相同PIXTIFF字符串进行引用。是否有人已经“修复”了他们,或者是否有一个非标准流程创建了该公司我不能说的集合。
因此,如果您确实发现这些PIXTIFF二进制文件,请先检查它们是否是有效的tiff,然后再继续。制作副本,给它一个.tif扩展名并使用类似IrfanView的内容来尝试打开它。
查看Tiff header spec: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);
}
答案 1 :(得分:0)
Altalasoft成像产品可以读取(并创建)这些文件。
此外,您通常可以使用标准Windows Imaging SDK甚至标准GDI +库来读取TIFF文件。 (或者,.NET System.Windows.Drawing库。)
某些PIXTIFF tif文件是“类型6”并使用JPEG压缩。我发现读取这些的最好的库是LibTiff库(或者是.NET版本,BitMiracle的LibTiff.net:http://bitmiracle.com/libtiff/)。