gpt4 book ai didi

c# - 在 C# 中合并多个 TIF 文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:05 25 4
gpt4 key购买 nike

我正在尝试将多个 .tif 文件合并为一个,但合并后,新的 .tif 文件的图像质量非常低。

如何提高质量?

我想要新的合并文件质量作为原始质量。我正在使用此代码合并 tif 文件

   string[] sa = path;
ImageCodecInfo info = null;
foreach (ImageCodecInfo ice in ImageCodecInfo.GetImageEncoders())
if (ice.MimeType == "image/tiff")
info = ice;
Encoder enc = Encoder.SaveFlag;
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
Bitmap pages = null;
int frame = 0;
foreach (string s in sa)
{
// using (FileStream fileStream = System.IO.File.Open(s, FileMode.Open))
{
if (frame == 0)
{
pages = (Bitmap)Image.FromFile(s);
//save the first frame
pages.Save(filepath, info, ep);
}
else
{
//save the intermediate frames
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
Bitmap bm = (Bitmap)Image.FromFile(s);
pages.SaveAdd(bm, ep);
}
if (frame == sa.Length - 1)
{
//flush and close.
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
pages.SaveAdd(ep);
}
frame++;
}
}

最佳答案

对此不是 100% 确定,但我相信默认情况下多帧 TIFF 是使用 G3 编码的。只是给一些尝试,改变这个:

Encoder enc = Encoder.SaveFlag;
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);

为此:

Encoder enc = Encoder.SaveFlag;
Encoder encComp = Encoder.Encoder.Compression;
EncoderParameters ep = new EncoderParameters(2);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
ep.Param[1] = new EncoderParameter(encComp, (long)EncoderValue.CompressionLZW);

然后重试(您也可以使用 CompressionNone 而不是 CompressionLZW,但 LZW 是无损的,因此它不应降低质量)

关于c# - 在 C# 中合并多个 TIF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19334855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com