You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:56:04