Як поєднувати зображення в багатосторінковий TIFF в .NET
Кожен раз, коли мені потрібно архівувати або ділитися великою кількістю сканів, записів або доків, багатосторонній TIFF все ще є королем – особливо для дотримання або передачі речей в старий навчальний заклад.
Чому багатосторонній TIFF?
PDF є всюди, але багато систем спадщини або робочих потоків документів Попит TIFFs (особливо для медичних або юридичних записів). Ви хочете одного файлу, всі сторінки всередині, без перешкод.
Мій шлях до рішення
Я кидаю всі мої джерельні зображення (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());
Четвертий етап: перевірка та вирішення проблем
- Відкрийте TIFF в IrfanView, Photoshop або навіть Windows Photos. Якщо він виглядає добре, ви встановлені.
- Якщо ви отримуєте чорно-білі сторінки: перевірте формати зображення та кольорові глибини.
П’ятий етап – бонус
- Change
Compression
доLzw
для кольорових кольорів абоNone
За втрати - Для робочих місць, вкладіть код вище в роуп для кількох папок
- Паралелізуйте, якщо ваш комп’ютер може справлятися з цим - просто не відкривайте занадто багато файлів одночасно!
Що мене іноді піднімає
- Замовлення файлів: Переконайтеся, що ваші файли називаються або класифікуються так, як ви хочете, щоб вони з’явилися
- Weird формати: Деякі рідкісні формати потребують конвертації в PNG/JPG перш за все
- Великі файли: Великі пакети або сторінки високого рівня = велика пам’ять; обробка в менших шматочках, якщо це необхідно
Про Тіпс
- Я зберігаю мої джерельні зображення застережені — як тільки ви поєднуєтеся, ви не можете «однократно» їх легко
- Для дотримання, дотримуйтесь загальних компресій (Lzw, Fax4)
- Використовуйте чітке ім’я для TIFF-виходу (датум, проектом і т.д.)
FAQ
** Q: Чи можу я поєднувати кольорові і сірі зображення?**Відповідь: Так, але перевірте вихід — ТІФФ можуть бути дивними, якщо сторінки радикально відрізняються
**Q: Як я автоматизую це для кожного завантаження?**Відповідь: Вкладіть цю логіку в обсерваторію або заплановану роботу — легко з завданнями .NET або послугами Windows
**Q: Що таке OCR або пошукові TIFF?**Відповідь: Вам знадобиться OCR крок — Aspose.OCR або подібний — до/після злиття, якщо вам потрібен пошуковий текст
Заключення
З Aspose.Imaging для .NET і простий скрипт, ви можете перейти від недоброзичливих папок до відповідних, архівованих і діляться TIFF за хвилини.Цей підхід врятував мені годин – і я довіряю йому кожен раз.
See Завантажити .NET API Reference Для більш TIFF, бач і багатосторонніх порад.