1

多くの画像とメタデータを含む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を作成しますか?どうも

4

2 に答える 2

0

メタデータを追加するためのスクリプトを使用するオプションがある場合:

Phil Harvey's を使用してくださいexiftool

exiftoolTIFF を含む多くの異なるファイル形式との間でメタデータを読み書きするための、非常に強力で、十分に文書化された (そしてマルチプラットフォームの) コマンドライン ユーティリティです。

于 2012-04-27T16:15:18.193 に答える
0

私は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 ファイルには、すべてのタグと画像データを関連付ける 1 つのディレクトリが必要です。

最後に、もちろん、さらに 1 つ上のレベルに進むこともできます。作成する TIFF ファイルの固定構造がわかっている場合は、LibTIFF を使用せずにバイトを書き込むだけです。

于 2012-03-26T13:23:15.420 に答える