Как объединить изображения в многостраничный TIFF в .NET

Как объединить изображения в многостраничный 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, пакет и многостраничные советы.

 Русский