From 237c4d8c47c687b2c0851f444c6a9dd54175e120 Mon Sep 17 00:00:00 2001 From: along Date: Thu, 10 Jul 2025 23:44:07 +0800 Subject: [PATCH] first commit --- .gitignore | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 3 +++ tile_info | Bin 0 -> 16200 bytes tile_info.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 tile_info create mode 100644 tile_info.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a02ede --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +# ---> C +/imgs +/.vscode +/app +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + diff --git a/README.md b/README.md new file mode 100644 index 0000000..e946fa2 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# tiff-io_uring + +异步I/O读取geotiff。 \ No newline at end of file diff --git a/tile_info b/tile_info new file mode 100755 index 0000000000000000000000000000000000000000..9a40ab0ceb4c34600775b50b2a0f494bda802d0f GIT binary patch literal 16200 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 literal 0 HcmV?d00001 diff --git a/tile_info.c b/tile_info.c new file mode 100644 index 0000000..e0e6329 --- /dev/null +++ b/tile_info.c @@ -0,0 +1,58 @@ +#include +#include + +int main() +{ + TIFF *tif = TIFFOpen("imgs/ortho.tif", "r"); + if (!tif) + { + printf("Failed to open file.\n"); + return 1; + } + + uint32 tileWidth, tileHeight; + TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tileWidth); + TIFFGetField(tif, TIFFTAG_TILELENGTH, &tileHeight); + printf("Tile size: %dx%d\n", tileWidth, tileHeight); + + uint32 imageWidth, imageHeight; + TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imageWidth); + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageHeight); + + uint32 tilesAcross = (imageWidth + tileWidth - 1) / tileWidth; + uint32 tilesDown = (imageHeight + tileHeight - 1) / tileHeight; + uint32 totalTiles = tilesAcross * tilesDown; + printf("Tile count: %d x %d = %d\n", tilesAcross, tilesDown, totalTiles); + + uint16 samplesPerPixel; + uint16 bitsPerSample; + + TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &samplesPerPixel); + TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bitsPerSample); + + // 一个像素有几个通道sample,一个sample有多少位 + printf("Samples per pixel: %d\n", samplesPerPixel); + printf("Bits per sample: %d\n", bitsPerSample); + + uint16 sampleFormat = SAMPLEFORMAT_UINT; // 默认无符号 + TIFFGetField(tif, TIFFTAG_SAMPLEFORMAT, &sampleFormat); + + printf("Sample format: %d\n", sampleFormat); // 1=uint, 2=int, 3=float + + tsize_t *byteCounts = NULL; + toff_t *offsets = NULL; + + TIFFGetField(tif, TIFFTAG_TILEBYTECOUNTS, &byteCounts); + TIFFGetField(tif, TIFFTAG_TILEOFFSETS, &offsets); + + for (uint32 i = 0; i < totalTiles; i++) + { + printf("Tile %3d: Offset = %8llu, Size = %6lu bytes\n", + i, + (unsigned long long)offsets[i], + (unsigned long)byteCounts[i]); + } + + TIFFClose(tif); + return 0; +}