using WzComparerR2.WzLib;
using System.Drawing.Imaging;
var structure = new Wz_Structure();
structure.Load("path/to/Base.wz", true);
var png = structure.WzNode.FindNodeByPath("Map\\Back\\grassySoil.img\\back\\3", true).GetValue<Wz_Png>();
var bitmap = png.ExtractPng();
bitmap.Save("img.png", ImageFormat.Png);
在使用Wz_Png的ExtractPng解析并保存bitmap时,发现图片不完整,调试发现zlib.Read在读取的过程中,一次性只读取部分数据,导致图像数据不完整。
例如Png图像就只有部分顶部区域可见,其余部分透明,大概变成这样:
工程配置(macos 12.2.1, dotnet sdk 6.0, console app):
测试代码(Program.cs):
原始代码: https://github.com/Kagamia/WzComparerR2/blob/5ce3a924260a35442b81754fd539d3ba868c0c37/WzComparerR2.WzLib/Wz_Png.cs#L128
经过以下调整后,图像就可以正常解析并解决问题:
不知道是否是框架版本的问题,请问其他人遇到过类似问题吗?