我有一个颜色格式为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