我有以下图像(已放置图像的屏幕抓图,因为它的大小超过 2 MB - 可以从https://drive.google.com/file/d/1rC2QQBzMhZ8AG5Lp5PyrpkOxwlyP9QaE/view?usp=下载原始图像分享
我正在使用BitmapDecoder
类读取图像并使用 JPEG 编码器保存它。这会导致以下图像颜色变淡并褪色。
var frame = BitmapDecoder.Create(new Uri(inputFilePath, UriKind.RelativeOrAbsolute),BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None).Frames[0];
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(frame);
using (var stream = File.OpenWrite(outputFilePath))
{
encoder.Save(stream);
}
图像使用PhotoShop RGB
配色方案。我尝试使用以下代码设置颜色配置文件,但这会导致此错误The designated BitmapEncoder does not support ColorContexts
encoder.ColorContexts = frame.ColorContexts;
更新:克隆图像似乎可以解决问题。但是当我使用以下代码调整图像大小进行转换时,不会保留颜色配置文件
Transform transform = new ScaleTransform(width / frame.Width * 96 / frame.DpiX, height / frame.Height * 96 / frame.DpiY, 0, 0);
var copy = BitmapFrame.Create(frame);
var resized = BitmapFrame.Create(new
TransformedBitmap(copy, transform));
encoder.Frames.Add(resized);
using (var stream = File.OpenWrite(outputFilePath))
{
encoder.Save(stream);
}