C#项目Windows平台PNM图片保存颜色偏移问题求助
PNM格式图片Windows保存后颜色1字节偏移问题
我正在开发一个基于C#的照片编辑应用,初期选择支持简易的PNM格式。目前可正常打开PNM图片并调整配色,但保存时出现跨平台异常:
- macOS上保存的图片正常
- Windows平台保存后重新打开,颜色会出现1字节偏移的损坏问题
原始示例图片与Windows平台加载重开后的损坏效果对比:
- 原始图:正常显示的PNM图片
- 损坏图:颜色通道偏移后的异常图片
问题排查与尝试
推测问题出在图片保存逻辑,当前流程是先将完整文件头写入流,再逐个写入颜色字节。调试时确认写入的字节数组无冗余内容,用记事本对比保存前后的文件也未发现可见差异。已尝试过以下方案,但问题依旧:
- 不用StringBuilder构建文件头
- 换用不同方式写入流
- 更换编码转换字节
保存实现代码
SaveTo方法
public void SaveTo(Stream stream) { _filter.WriteHeader(stream, _image); foreach (var (x, y) in _enumerationStrategy.Enumerate(Width, Height)) { var triplet = _image[x, y]; _filter.Write(stream, triplet, _converterProvider.Converter); } }
WriteHeader方法
public void WriteHeader(Stream stream, IBitmapImage image) { var builder = new StringBuilder(); builder.AppendLine("P6"); builder.AppendLine($"{image.Width} {image.Height}"); builder.AppendLine("255"); var header = builder.ToString(); var headerBytes = Encoding.UTF8.GetBytes(header); stream.Write(headerBytes, 0, headerBytes.Length); }
内容的提问来源于stack exchange,提问作者Artem Andreev
相关产品推荐
相关产品推荐

