C#图像丢失YCbCr(CMYK),文件大小增加了五倍

时间:2018-09-04 09:13:42

标签: c# .net opencv bitmap

我有一个颜色格式为YCbCr(CMYK)的图像。当我使用.NET位图加载此文件并保存结果时,颜色格式将更改为RBG,并且filze从〜1.600 KB增加到〜7.500 KB。

using (Image bitmap = Image.FromFile(@"C:\Test\Original.tif"))
{
    bitmap.Save(@"C:\Test\result.tif");
}

样本文件是一个多帧Tiff文件,其颜色格式为YCbCr(CMYK),深24位。它是一个Tiff容器,其中包含两个没有压缩的JPEG文件。

您可以在此处下载示例文件:https://ufile.io/9x21n

我已经尝试过OpenCV包装程序Nuget软件包(https://github.com/shimat/opencvsharp),但结果是相同的。

Mat imageForProcessing = Cv2.ImRead(@"C:\Test\Original.tif");
Cv2.ImWrite(@"C:\Test\result.tif", imageForProcessing);

是否有免费的第三方库,.NET或OpenCV方式来读取和写入图像而不会丢失颜色格式和增加文件大小五倍?

更新1

我尝试了使用以下源代码的 TiffBitmapEncoder 类。现在,正确的深度是正确的(将结果从〜7.500 KB减小到〜6.400 KB),但是输出还是以RGB为单位。

FileStream stream = new FileStream(@"C:\Test\original.tif", FileMode.Open);
TiffBitmapEncoder encoder = new TiffBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(stream));
encoder.Save(stream);

我将不胜感激!

问候 Sascha

0 个答案:

没有答案