Как объединить изображения в многостраничный TIFF в .NET
Каждый раз, когда мне нужно архивировать или делиться большим набором сканирования, записей или дочек, многостраничный TIFF все еще король – особенно для соблюдения или передачи вещей в старую школу.
Почему Multi-Page TIFF?
PDF-файлы есть везде, но много систем наследия или рабочих потоков документов спрос TIFFs (особенно для медицинских или юридических записей). Вы хотите одного файла, все страницы внутри, нет шуток.
Мое решение Go-to
Я бросаю все мои источничные изображения (JPG, PNG, даже старые BMPs) в папку, запускаю этот скрипт C#, и выходит чистый, многостраничный TIFF.
Предупреждения
- Visual Studio 2019+ (или только .NET CLI)
- .NET 6.0+ (или .Net Framework 4.6.2+)
- Aspose.Imaging для .NET (NuGet делает жизнь проще)
- Фолклор изображений для сливания
PM> Install-Package Aspose.Imaging
Вот как я строю многостраничный TIFF
Шаг 1: Собирайте все изображения
Я просто снимаю все изображения из моего ./input
На папке:
string[] files = Directory.GetFiles("./input", "*.jpg"); // tweak pattern for PNG, BMP, etc.
Шаг 2: Загрузите изображения и установите экспорт TIFF
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
Шаг 3: Сохраните все страницы в одном 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());
Шаг 4: Проверка санитарии и устранение проблем
- Откройте TIFF в IrfanView, Photoshop или даже Windows Photos. Если он выглядит хорошо, вы настроены.
- Если вы получаете черные/белые страницы: проверьте форматы изображения и цветовые глубины.
Шаг 5: Бонус Tweaks
- Change
Compression
ДляLzw
для цветных дочек илиNone
Для потери - Для работы в комплекте, введите код выше в круг для нескольких папок
- Параллелируйте, если ваш компьютер способен справиться с этим — просто не открывайте слишком много файлов одновременно!
Что меня иногда поднимает
- Заказ файла: Убедитесь, что ваши файлы называются или сортируются так, как вы хотите, чтобы они появились
- Верд формат: Некоторые редкие формати требуют конверсии в PNG/JPG сначала
- Большие файлы: Большие пакеты или страницы высокого уровня = большая память; обработка в меньших частях при необходимости
Про Tips
- Я поддерживаю свои источничные изображения — когда вы сливаетесь, вы не можете их легко «однократно»
- Для соответствия, придерживайтесь общей компрессии (Lzw, Fax4)
- Используйте четкое наименование для выхода TIFF (датум, проект и т.д.)
FAQ
Q: Могу ли я сочетать цветные и серые изображения?**Ответ: Да, но проверьте выход — TIFF может быть странным, если страницы радикально отличаются
**Q: Как я автоматизирую это для каждого загрузки?**Ответ: Введите эту логику в рабочую или запланированную работу — легко с заданиями .NET или услугами Windows
**Q: Что такое OCR или поисковые TIFF?**Ответ: Вам понадобится OCR шаг — Aspose.OCR или аналогичный — до/после слияния, если вам нужен поисковый текст
Заключение
С Aspose.Imaging для .NET и простой скрипт, вы можете перейти от месси-файлов к соответствующим, архивируемым и совместимым TIFF в минуты.
See Aspose.Imaging для .NET API Reference Для большей части TIFF, пакет и многостраничные советы.