gpt4 book ai didi

c# - 多页 tiff 程序空白页

转载 作者:行者123 更新时间:2023-11-30 18:37:22 27 4
gpt4 key购买 nike

我编写了一个代码来将单个 tiff 文件合并为多页 tiff。但输出最后带有空白页。如果输入文件是黑白的,但对于彩色的 .tiff 文件,代码工作正常。例如,如果我提供 100 个文件,作为输入输出,单个 tiff 文件有 47 页,其余为空白。

我使用标准代码来实现这个功能,下面是我的代码。有人知道为什么吗?

 using (FileStream fs = new FileStream(fileNameTemp, FileMode.Append, FileAccess.Write))
{
System.Windows.Media.Imaging.TiffBitmapEncoder tifEnc = new System.Windows.Media.Imaging.TiffBitmapEncoder();
tifEnc.Compression = System.Windows.Media.Imaging.TiffCompressOption.Default;

foreach (string fileName1 in filePaths)
{
Console.WriteLine("FileName:::" + fileName1);

System.Windows.Media.Imaging.BitmapImage bmpImg = new System.Windows.Media.Imaging.BitmapImage();
bmpImg.BeginInit();
bmpImg.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
bmpImg.UriSource = new Uri(fileName1);
bmpImg.EndInit();

System.Windows.Media.Imaging.FormatConvertedBitmap fcb = new System.Windows.Media.Imaging.FormatConvertedBitmap(bmpImg,
System.Windows.Media.PixelFormats.Rgb24,
System.Windows.Media.Imaging.BitmapPalettes.Halftone27,
1.0);
tifEnc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(fcb));



}

tifEnc.Save(fs);
fs.Dispose();


}

提前致谢!

最佳答案

在下面的示例中,当您执行 bitmapImage.EndInit() 时未加载 BitmapImage,因为它似乎在进行延迟加载。如果释放了内存流,那么我得到的页面也是白色的,因为没有加载图像。第二种方法采用目标文件路径和源列表。

        public static BitmapImage LoadImage(byte[] bytes)
{
var memoryStream = new MemoryStream(bytes);

var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memoryStream;
bitmapImage.EndInit();
return bitmapImage;
}

public static void CreateTiff(string destPath, params string[] filePaths)
{
using (FileStream fs = new FileStream(destPath, FileMode.Append,
FileAccess.Write))
{
var tifEnc = new TiffBitmapEncoder();
tifEnc.Compression = TiffCompressOption.Default;

foreach (string fileName in filePaths)
{
var image = LoadImage(File.ReadAllBytes(fileName));

tifEnc.Frames.Add(BitmapFrame.Create(image));
}

tifEnc.Save(fs);
}

}

关于c# - 多页 tiff 程序空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911495/

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