How Merge Images into a Multi-Page TIFF in .NET
Whenever I’ve needed to archive or share a big batch of scans, receipts, or docs, multi-page TIFF is still king—especially for compliance or handing stuff off to an old-school office. Here’s exactly how I do it with Aspose.Imaging for .NET.
Why Multi-Page TIFF?
PDFs are everywhere, but a lot of legacy systems or document workflows demand TIFFs (especially for medical or legal records). You want one file, all pages inside, no fuss.
My Go-To Solution
I drop all my source images (JPGs, PNGs, even old BMPs) into a folder, run this C# script, and out pops a clean, multi-page TIFF. Works every time—and I can automate or customize it if needed.
Prerequisites
- Visual Studio 2019+ (or just the .NET CLI)
- .NET 6.0+ (or .NET Framework 4.6.2+)
- Aspose.Imaging for .NET (NuGet makes life easier)
- A folder of images to merge
PM> Install-Package Aspose.Imaging
Here’s How I Build the Multi-Page TIFF
Step 1: Collect All Images
I just grab all the images from my ./input
folder:
string[] files = Directory.GetFiles("./input", "*.jpg"); // tweak pattern for PNG, BMP, etc.
Step 2: Load Images and Set Up TIFF Export
var images = files.Select(f => Image.Load(f)).ToList();
var tiffOptions = new Aspose.Imaging.ImageOptions.TiffOptions(Aspose.Imaging.FileFormats.Tiff.Enums.TiffExpectedFormat.Default);
tiffOptions.Compression = Aspose.Imaging.FileFormats.Tiff.Enums.TiffCompressions.CcittFax4; // good for scans; use Lzw or None for color
Step 3: Save All Pages in a Single TIFF
string outFile = "./output/merged_multipage.tiff";
using (var tiffImage = Aspose.Imaging.Image.Create(tiffOptions, images[0].Width, images[0].Height, false))
{
for (int i = 0; i < images.Count; i++)
{
var srcImg = images[i];
// For first page, just draw
if (i == 0)
{
var g = new Aspose.Imaging.Graphics(tiffImage);
g.DrawImage(srcImg, 0, 0, srcImg.Width, srcImg.Height);
}
else
{
// Add a new page for each image
tiffImage.AddPage(srcImg);
}
}
tiffImage.Save(outFile);
}
images.ForEach(img => img.Dispose());
Step 4: Sanity Check and Troubleshoot
- Open the TIFF in IrfanView, Photoshop, or even Windows Photos. If it looks good, you’re set.
- If you get black/blank pages: check image formats and color depths. TIFF is picky about some color types.
Step 5: Bonus Tweaks
- Change
Compression
toLzw
for color docs orNone
for lossless - For batch jobs, wrap the code above in a loop for multiple folders
- Parallelize if your machine can handle it—just don’t open too many files at once!
What Trips Me Up Sometimes
- File order: Make sure your files are named or sorted how you want them to appear
- Weird formats: Some rare formats need conversion to PNG/JPG first
- Huge files: Large batches or high-res pages = big memory; process in smaller chunks if needed
Pro Tips
- I keep my source images backed up—once you merge, you can’t “un-bake” them easily
- For compliance, stick to common compressions (Lzw, Fax4)
- Use clear naming for your output TIFFs (date, project, etc.)
FAQ
Q: Can I merge color and grayscale images? A: Yes, but check the output—TIFFs can be weird if pages are radically different
Q: How do I automate this for every upload? A: Wrap this logic in a watcher or scheduled job—easy with .NET tasks or Windows services
Q: What about OCR or searchable TIFFs? A: You’ll need an OCR step—Aspose.OCR or similar—before/after merging if you need searchable text
Conclusion
Multi-page TIFFs don’t have to be a pain. With Aspose.Imaging for .NET and a simple script, you can go from messy folders to compliant, archivable, and shareable TIFFs in minutes. This approach has saved me hours—and I trust it every time.
See Aspose.Imaging for .NET API Reference for more TIFF, batch, and multi-page tips.