求助:.NET Core下用LibTIFF.NET实现JPG转TIFF(含多页)的正确示例
.NET Core下JPG转多页/单页TIFF实现方案(无System.Drawing)
多页TIFF转换示例(基于SixLabors.ImageSharp)
SixLabors.ImageSharp是.NET Core原生支持的跨平台图像处理库,采用MIT许可可商用,无需依赖System.Drawing。
第一步:安装依赖包
Install-Package SixLabors.ImageSharp Install-Package SixLabors.ImageSharp.Formats.Tiff
第二步:实现多页转换代码
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Formats.Tiff; using SixLabors.ImageSharp.PixelFormats; using System.Collections.Generic; using System.IO; public static void ConvertJpgsToMultiPageTiff(List<string> jpgFilePaths, string outputTiffPath) { var tiffEncoder = new TiffEncoder { Compression = TiffCompression.Deflate, // 可选压缩:Lzw、Deflate、None等 MultiFrame = true }; using var outputStream = new FileStream(outputTiffPath, FileMode.Create); Image<Rgba32> multiPageImage = null; try { foreach (var jpgPath in jpgFilePaths) { using var singleJpg = Image.Load<Rgba32>(jpgPath); if (multiPageImage == null) { // 初始化第一帧 multiPageImage = singleJpg.Clone(); multiPageImage.Save(outputStream, tiffEncoder); } else { // 追加后续页面 multiPageImage.Frames.AddFrame(singleJpg.Frames.RootFrame.Clone()); } } // 最终保存所有帧 multiPageImage?.Save(outputStream, tiffEncoder); } finally { multiPageImage?.Dispose(); } }
单页JPG转TIFF简化示例
using SixLabors.ImageSharp; using SixLabors.ImageSharp.Formats.Tiff; using SixLabors.ImageSharp.PixelFormats; using System.IO; public static void ConvertSingleJpgToTiff(string jpgFilePath, string outputTiffPath) { var tiffEncoder = new TiffEncoder { Compression = TiffCompression.Deflate }; using var image = Image.Load<Rgba32>(jpgFilePath); image.Save(outputTiffPath, tiffEncoder); }
可商用替代库推荐
- Magick.NET:基于ImageMagick的.NET封装,MIT许可,支持几乎所有图像格式,多页TIFF处理成熟。安装对应平台包(如
Magick.NET-Q16-AnyCPU)后,可通过MagickImageCollection加载多张JPG并保存为多页TIFF。 - Leadtools:企业级商用图像处理库,功能全面,支持高级图像编辑、格式转换及OCR等,需付费授权,适合对性能和功能有高要求的场景。
注意事项
- 生成的TIFF文件建议用专业图像工具(如IrfanView、Photoshop)验证,避免系统自带查看器的兼容性问题。
- 处理大量或大尺寸图片时,建议逐帧释放资源,避免内存溢出。
内容的提问来源于stack exchange,提问作者PointlessSpike
相关产品推荐
相关产品推荐

