C# 如何从.PNG获取像素数据?

C# 如何从.PNG获取像素数据?,c#,bitmap,unity3d,png,C#,Bitmap,Unity3d,Png,不使用系统绘图 我有一个C#应用程序,它接收指向许多.PNG文件的文件路径列表。我想从图像中提取一组像素(颜色)数据,但我无法确定提取该数据的最佳方法 我原本希望能够使用System.Drawing,如中所述,但我无法访问System.Drawing,因为我的应用程序(Unity3d)使用OpenGL(因此与System.Drawing不兼容) 同样,应用程序也无法接触到。除了编写自己的PNG解码器之外,还有其他方法可以提取我感兴趣的数据吗?如果您使用的是Unity,那么您可以访问他们的API,

不使用系统绘图

我有一个C#应用程序,它接收指向许多.PNG文件的文件路径列表。我想从图像中提取一组像素(颜色)数据,但我无法确定提取该数据的最佳方法

我原本希望能够使用System.Drawing,如中所述,但我无法访问System.Drawing,因为我的应用程序(Unity3d)使用OpenGL(因此与System.Drawing不兼容)


同样,应用程序也无法接触到。除了编写自己的PNG解码器之外,还有其他方法可以提取我感兴趣的数据吗?

如果您使用的是Unity,那么您可以访问他们的API,该API正好满足您的需要


也许符合要求?与
系统不兼容。绘图听起来很有趣。你不必用它画图,但你仍然可以包括它并使用它(用于创建/加载位图和读取其像素),不?@Sinatr不,我根本没有访问DLL的权限。@Sinatr据我所知,
DLL
s只有在拥有Unity Pro许可证的情况下才能像那样包括在内。(我没有,或者我会尝试那个方法,因为我在搜索中发现了。)为什么不起作用?我使用的是
byte[]bytes=System.IO.File.ReadAllBytes(PATH)与LoadImage结合使用,但加载的纹理比.PNG保存为的颜色更深(直接比较RGB值)。你知道为什么会这样吗?听起来你的PNG里有伽马或者颜色空间的信息;据我所知,LoadImage也不尊重这两种格式,所以您必须烘焙这两种格式。有没有关于如何保存.png以删除它的建议?我不怎么处理图像,也不知道是否添加了类似的东西(或者是如何添加的);正如您所说,loadImage不进行gamma校正,所以这就是区别。谢谢你的帮助!我没有。相反,我取消了源图像的烘焙,完全通过删除PNG中的gamma字节。这使得动态负载相当于编辑器负载。这是唯一的交易,但至少它证实了LoadImage的实际情况。