Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TiffBitmapEncoder未以颜色保存_C#_Tiff - Fatal编程技术网

C# TiffBitmapEncoder未以颜色保存

C# TiffBitmapEncoder未以颜色保存,c#,tiff,C#,Tiff,我们的用户需要能够更改图像(在页面之间旋转\插入扫描等),因此我编写了一个应用程序,允许他们加载Tiff图像并根据需要进行编辑 我的问题是,当图像被保存时,它被保存为黑白,而不是彩色。加载的图像以彩色显示没有问题,因此似乎是保存导致了问题 这是我用来从BitmapSource数组保存Tiff图像的代码: //create encoder TiffBitmapEncoder tiffEncoder = new TiffBitmapEncoder(); tiffEncoder.Compression

我们的用户需要能够更改图像(在页面之间旋转\插入扫描等),因此我编写了一个应用程序,允许他们加载Tiff图像并根据需要进行编辑

我的问题是,当图像被保存时,它被保存为黑白,而不是彩色。加载的图像以彩色显示没有问题,因此似乎是保存导致了问题

这是我用来从BitmapSource数组保存Tiff图像的代码:

//create encoder
TiffBitmapEncoder tiffEncoder = new TiffBitmapEncoder();
tiffEncoder.Compression = TiffCompressOption.Ccitt4; 

//loop through images and create frames
foreach (BitmapSource src in bitmapList)
{
    BitmapFrame bmFrame = BitmapFrame.Create(src);
    tiffEncoder.Frames.Add(bmFrame);
}

//create stream to write file
FileStream fStream = null;
try
{
    fStream = new FileStream(path, FileMode.Create);
    //Save Tiff image to disc
    tiffEncoder.Save(fStream);
}
finally
{
    if (fStream != null)
    {
         fStream.Close();
    }
}
当我查看原始文件的属性时,它的位深度为24,但新保存的图像的位深度为1(黑白?),这是问题所在吗

我对与TIFF合作还不熟悉,因此非常感谢您的指导

如果您需要任何其他信息,请告诉我


Tx

由于使用了
TiffCompressOption.Ccitt4
压缩,图像可能会转换为黑/白。CCITT压缩用于传真文档,仅支持黑白图像


相反,使用更通用的压缩,如LZW或Deflate。这将使图像数据以24或32位颜色数据的形式不变地传递。

这可能是由于使用了
TiffCompressOption.Ccitt4
压缩。CCITT压缩用于传真文档,仅支持黑白图像。尝试使用更通用的压缩,如LZW或Deflate。谢谢,伙计,100%有效。您想创建一个答案,以便我将其标记为答案吗?太好了!贴在下面作为答案。