文件格式转换为TIFF。一些问题?

时间:2010-04-30 05:48:02

标签: delphi format image-manipulation tiff image-conversion

我有一个专有的图像格式SNG(一种专有格式),它在单独的HDR文件中有一个图像数据的连续数组以及图像元信息。

现在我需要将此SNG格式转换为标准TIFF 6.0格式。所以我研究了TIFF格式,即关于它的标题,图像文件目录(IFD)和剥离图像数据。

现在我对这种转换几乎没有任何担忧。请帮助我。

  1. SNG连续数据与TIFF剥离数据:我应该将SNG数据转换为TIFF作为一个Strip中的连续数据(数据加载/编辑时间问题?)或者制作SNG图像数据的逻辑StripOffsets。

  2. SNG Data Header仅使用必要的元信息,因此在将SNG转换为TIFF时,无法检索某些信息,如NewSubFileType,Software Tag等。

    因此,这引起了一个问题,即转换后是否需要任何丢失的目录信息,如NewSubFileType,Software Tag等,以及TIFF文件的充分条件。

  3. SNG数据中RGB样本的每个像素分量的编码:

  4. 此处每个像素组件的每个SNG图像数据条带编码为:

    Out^[i] := round( LineBuffer^[i * 3] * **0.072169**  +  LineBuffer^[i * 3 + 1] * **0.715160** + LineBuffer^[i * 3+ 2]* **0.212671**); 
    

    我推断的唯一方法是每个像素用3个RGB分量表示,并且一些系数与每个分量相乘以使SNG Viewer工作SNG图像数据的RGB颜色信息。 (开发人员之前在此处工作,现在我正在跟踪 :))

    因此,在将其转换为TIFF时,需要进行相同的解码。这引起了对TIFF中如何生成RBG信息的担忧,或者我们更需要这些信息?

    请协助......

2 个答案:

答案 0 :(得分:1)

一种方法,如果你有一个处理并可以打印这种格式的Windows应用程序,那就是让它为你完成工作,然后调用它将文件打印到许多支持的“打印机驱动程序”之一直接输出到TIFF。

答案 1 :(得分:1)

您是否可以将其加载到标准的Windows位图句柄中?如果是这样,可能有一堆免费和商业库将其保存为TIFF。

TIFF的标准是libtiff - 它是一个C库。以下是由TIFF格式的专家制作的Delphi版本:

http://www.awaresystems.be/imaging/tiff/delphi.html

似乎有很多选择。

我认为

的方法
  1. 将格式加载到内存中的标准位图(您需要这样做才能显示它,对吗?)
  2. 使用预先存在的TIFF编码库保存为TIFF
  3. 比尝试直接格式化格式转换要容易得多。我不这样做的唯一原因是:

    1. 位图太大而无法保留在内存中
    2. 原始格式是有损的,我将在重新编码中失去更多质量 - 但您必须保存标准有损格式(JPEG)以节省质量。
    3. 免责声明:我为Atalasoft工作。

      我们制作.NET成像编解码器(包括TIFF) - 比LibTiff更容易使用 - 您可以通过COM在Delphi中调用它们。我们可以使用几行代码将标准窗口位图转换为TIFF或PDF(或其他格式)。