You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SixLabors ImageSharp将TIFF保存为单条带格式?

将非单条带TIFF转为单条带TIFF的实现方法

可以实现,核心是通过TiffEncoder的参数手动指定RowsPerStrip为图像的总行数(即等于ImageLength),覆盖原文件的条带设置。以下是具体实现方式:

.NET 环境下的代码示例

若使用System.Drawing.Imaging(.NET Core/.NET 5+需先安装System.Drawing.Common NuGet包):

using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;

public void ConvertToSingleStripTiff(string inputPath, string outputPath)
{
    using (Image image = Image.FromFile(inputPath))
    {
        // 获取TIFF编码器
        ImageCodecInfo tiffCodec = ImageCodecInfo.GetImageEncoders()
            .First(codec => codec.FormatID == ImageFormat.Tiff.Guid);

        // 设置编码器参数:将RowsPerStrip设为图像总行数
        EncoderParameters encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = new EncoderParameter(
            Encoder.SaveFlag, 
            (long)EncoderValue.MultiFrame | (long)image.Height);

        // 保存为单条带TIFF
        image.Save(outputPath, tiffCodec, encoderParams);
    }
}

关键说明

  • 直接通过Encoder.SaveFlag参数将RowsPerStrip值设为image.Height,强制生成单条带格式,替代SaveAsTiff默认保留原条带设置的逻辑。
  • 若使用ImageSharp等现代图像库,可更直观地设置参数:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Tiff;
using SixLabors.ImageSharp.PixelFormats;

public void ConvertToSingleStripTiffWithImageSharp(string inputPath, string outputPath)
{
    using (Image<Rgba32> image = Image.Load<Rgba32>(inputPath))
    {
        TiffEncoder encoder = new TiffEncoder
        {
            RowsPerStrip = image.Height
        };
        image.Save(outputPath, encoder);
    }
}

注意事项

  • 单条带TIFF会将整幅图像作为一个条带存储,大尺寸图像可能会增加内存占用,需根据场景权衡使用。

内容的提问来源于stack exchange,提问作者AdjunctProfPlum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:04:52