C++ library to read / write DermAnnotation TIFF files.
This requires C++17 or later.
git submodule update
# Windows
.\scripts\windows\setup.ps1 # Run as admin# macOS
zsh scripts/macos/setup.sh# Linux
bash scripts/linux/setup.shmkdir build/
cd build/
cmake .. # Configure
cmake --build . # Build libdermtiff and its dependencies
ctest -C debug --test-dir test/ # Run libdermtiff testslibdermtiff is in the namespace ldt.
#include <libdermtiff/dermtiff.hpp>
// Read TIFF file
const std::string path = "image.tiff";
if (const auto dermTiff = ldt::io::OpenTIFF(path); dermTiff.isValid) {
// Read original image
std::vector<uint32_t> raster(dermTiff.width * dermTiff.height);
if (ldt::io::ReadOriginalImage(path, raster.data())) {
// Success
} else {
// Failure
}
// Read layers
for (uint16_t layerIndex = 0; layerIndex < dermTiff.layerCount; layerIndex++) {
std::vector<uint32_t> raster(dermTiff.width * dermTiff.height);
ldt::Pencil pencil;
if (ldt::io::ReadLayer(path, layerIndex, raster.data(), &pencil)) {
// Success
} else {
// Failure
}
}
}
// Write TIFF file
std::vector<uint32_t*> rasters(pageCount); // Array of pointers of image data
std::vector<ldt::Pencil> pencils(pageCount); // Array of layer pencils
for (uint16_t page = 0; page < pageCount; page++) {
if (page == 0) {
// Original image
rasters[page] = originalImageRaster.data();
} else {
// Layers
rasters[page] = layerRasters[page - 1].data();
pencils[page] = ldt::Pencil{name, r, g, b, a};
}
}
bool success = ldt::io::WriteTIFF("image.tiff", pageCount, width, height, rasters.data(), pencils.data());