簡體   English   中英

如何使用元數據生成TIFF文件

[英]How to generate a tiff file with meta data

我必須生成包含許多圖像和元數據的tiff文件。 我發現它可能轉換為PNG或JPG格式為TIFF 這里 :但如何添加元數據? iOS的ImageMagic有可能嗎? 謝謝

編輯:最終我在iphone上安裝了ImageMagick,但我沒有找到如何用magickwand創建多頁tiff ....也有可能直接使用libtiff:我發現了如何在c代碼中創建一個空的簡單頁

char buffer[25 * 144] = { /* boring hex omitted */ };
    TIFF *image;
    char szFileName[512];


    strcpy(szFileName, getenv("HOME"));
    strcat(szFileName, "/Documents/");
    strcat(szFileName, "output.tif");
    // Open the TIFF file
    if((image = TIFFOpen(szFileName, "w")) == NULL)
    {
        printf("Could not open output.tif for writing\n");
    }

    // We need to set some values for basic tags before we can add any data
    TIFFSetField(image, TIFFTAG_IMAGEWIDTH, 25 * 8);
    TIFFSetField(image, TIFFTAG_IMAGELENGTH, 144);
    TIFFSetField(image, TIFFTAG_BITSPERSAMPLE, 1);
    TIFFSetField(image, TIFFTAG_SAMPLESPERPIXEL, 1);
    TIFFSetField(image, TIFFTAG_ROWSPERSTRIP, 144);

    TIFFSetField(image, TIFFTAG_COMPRESSION, COMPRESSION_CCITTFAX4);
    TIFFSetField(image, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISWHITE);
    TIFFSetField(image, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
    TIFFSetField(image, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);

    TIFFSetField(image, TIFFTAG_XRESOLUTION, 150.0);
    TIFFSetField(image, TIFFTAG_YRESOLUTION, 150.0);
    TIFFSetField(image, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);

    // Write the information to the file
    TIFFWriteEncodedStrip(image, 0, buffer, 25 * 144);

    // Close the file
    TIFFClose(image);

那么,有沒有關於如何在創建的tiff文件中插入圖像數據的c教程? 以及如何創建多頁tiff? 謝謝

如果您可以選擇使用腳本添加元數據:

使用Phil Harvey的exiftool

exiftool是一個功能強大,文檔完善的(和多平台的)命令行實用程序,用於從/向許多不同的文件格式(包括TIFF)讀寫元數據。

我已經使用了LibTIFF-但未直接在iOS上使用。 但是,這是一個普通的舊C庫,因此應該沒問題。 我確實注意到,Apple Image I / O框架應該支持圖像元數據(但我自己也沒有使用過)。 請參閱此處的鏈接-但似乎沒有多頁TIFF或定制標簽,只有標准化的相機信息標簽...

但是,在普通C語言中,添加您自己的定制標簽通常最簡單的方法是修改核心庫並將它們添加到主頭文件tiff.h中,以及一些包裝函數。

請參閱“ 添加新標簽 ”部分

然后,您可以像使用其他TIFF標簽一樣引用/使用它們,例如,我為加載一些嵌入式xml數據所做的事情:

TIFFGetField(lp_tif,MYTAG, &lp_xml)

當然,然后,您必須交付/維護修改后的libTIFF版本(新的“公共”標簽必須通過Adobe進行處理)。

您張貼的示例非常適合寫入單個TIFF文件(即,設置所有標簽,然后將緩沖區的內容寫入該文件)。 對於多頁TIFF,這又是一步。 如果需要映像文件目錄(IFD),則需要了解該概念。 我建議進一步查看此鏈接以了解功能的使用:

TIFFWriteDirectory()
TIFFReadDirectory()

注意:正確地, 每個 TIFF文件應具有一個目錄,以將所有標簽和圖像數據關聯在一起。

最后,您當然可以更進一步! 如果您知道要創建的TIFF文件的固定結構-只需寫入字節即可,甚至不使用LibTIFF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM