代码之家  ›  专栏  ›  技术社区  ›  chama

有人知道如何读取像素转换(pixtiff压缩)?

  •  0
  • chama  · 技术社区  · 14 年前

    我正在尝试读取一个TIFF文件,其中有一个与之关联的ANN文件。tiff不能用标准查看器打开。当我打开二进制ANN文件时,我唯一能理解的是它是用Pixel Translations Inc.的软件以PIXTIFF格式创建的。

    有人知道如何手动或以编程方式查看此文件吗?有没有免费的软件,我可以作为一个观众使用?

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  3
  •   Stewart Francis    12 年前

    为了充分披露信息,我是亚特兰大公司的员工。

    因为这个帖子,我们有一家公司来找我们,我想帮助尽可能多的人谁可能遇到他们的相同问题。

    这家公司有内部识别为PIXTIFF的文件。出现的特定字符串是“Pixel Translations Inc.,PIXTIFF Version”和一个版本号。但是,这些文件在tiff头之前有几百个字节,这使得它们无法在标准查看器中打开。

    所以,如果你发现你有这些PIXTIFF二进制文件,在继续之前先检查它们是否是有效的tiff。复制一个副本,给它一个.tif扩展名并使用类似 IrfanView 试着打开它。

    看着 Tiff header spec :Tiff文件以II*(0x49 0x49 0x2A 0x00)或MM*(0x4D 0x4D 0x2A 0x00)开头,然后从文件开始到第一个图像目录的偏移量。(尽管在我的经验中,big-endian-MM订单是很少见的。)

    注:流.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);
    }
    
        2
  •  0
  •   RMD    14 年前

    Altalasoft imaging产品可以读取(并创建)这些文件。

    参见: http://www.atalasoft.com/

    此外,您通常可以使用标准的Windows Imaging SDK甚至标准的GDI+库来读取TIFF文件。(或者,也可以是.NETSystem.Windows.绘图图书馆。)

    有些PIXTIFF tif文件是“type6”,使用JPEG压缩。我发现最好的库是LibTiff库(或.NET版本,LibTiff.net网站通过BitMiracle: http://bitmiracle.com/libtiff/ ).