1

最近、ここから PyLibTIFF をダウンロードしてインストールし、タイル化された tiff 画像を読み込もうとしています。

スキャンラインの画像を完全に読み取ることができますが、タイルを読み取るための正しい関数を見つけることさえできないようです。Python サイトパッケージ フォルダーの libtif ディレクトリ全体を検索しましたが、「read_tile」コマンドは見つかりませんでした。

私は基本的にこの例からトランスコードしようとしています:

TIFF* tif = TIFFOpen("myfile.tif", "r");
if (tif) {
uint32 imageWidth, imageLength;
uint32 tileWidth, tileLength;
uint32 x, y;
tdata_t buf;

TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imageWidth);
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);
TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tileWidth);
TIFFGetField(tif, TIFFTAG_TILELENGTH, &tileLength);
buf = _TIFFmalloc(TIFFTileSize(tif));
for (y = 0; y < imageLength; y += tileLength)
    for (x = 0; x < imageWidth; x += tileWidth)
    TIFFReadTile(tif, buf, x, y, 0);
_TIFFfree(buf);
TIFFClose(tif);

パイソンに。

これまでのところ、私は得ました:

tif = TIFF.open(tif_path, 'r')

image_width     = tif.GetField("ImageWidth")
image_length    = tif.GetField("ImageLength")
tile_width      = tif.GetField("TileWidth")
tile_length     = tif.GetField("TileLength")

y = 0
while y < image_length:

    x = 0
    while x < image_width:

        print tif.read_tile(x, y, 0)

        x += tile_width

    y += tile_length

tif.close()

実際には、tiff が破損しているかどうかをテストする必要があります。tif.info() は、破損した tif でもそのままのファイル ヘッダーを読み取るだけなので、役に立ちません。

どんな助け、考え、またはアイデアも大歓迎です! ありがとう!

4

2 に答える 2

0

libtiff のプロジェクト ページのドキュメントから:

"""警告: pylibtiff は現在、TIFF ストリップを使用して保存されているイメージの読み取りと書き込みをサポートしています。タイル化された TIFF イメージをサポートするためのパッチを歓迎します。"""

ただし、これは ctypes を使用する純粋な python パッケージであり、欠落している単一の呼び出しを特定したため、そこにある他の関数ラッパーからコピーして貼り付けて、TIFFReadTile への呼び出しを書き込むことができる可能性が非常に高くなります。

于 2012-04-02T11:55:24.020 に答える