using BitMiracle.LibTiff.Classic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XPrint.Image
{
    public class TiffSaver
    {
        public static void SaveTiff(Tiff tiff, string outputPath)
        {
            if (tiff == null) throw new ArgumentNullException(nameof(tiff));

            try
            {
                // 确保输出目录存在
                string directory = Path.GetDirectoryName(outputPath)!;
                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                // 写入文件
                tiff.WriteDirectory(); // 保存当前IFD目录
                tiff.Close(); // 关闭文件句柄

                // 若需覆盖原文件，需手动替换（LibTiff不支持直接覆盖）
                if (File.Exists(outputPath))
                {
                    File.Delete(outputPath);
                }
                File.Move(tiff.FileName(), outputPath); // 移动临时文件到目标路径
            }
            catch (Exception ex)
            {
                throw new IOException($"保存TIFF文件失败: {ex.Message}");
            }
        }
    }
}
