var pngExporterx = new PngExporter { Width = 600, Height = 400, Background = OxyColors.White };
pngExporterx.ExportToFile(plot2, "Assets/DCUnityOutput.png");
var pngImage = LoadPNG("Assets/DCUnityOutput.png");
能否请您解释一下-为什么在Windows调试期间它可以正常运行,而在移动设备上安装应用程序时却不能正常运行?
PNGExporter来自Oxyplot,用于winForms。
在我的手机上,我已经检查了存储数据权限,但没有任何反应。在Android / Windows中存储应用数据有什么区别?导出.png图像并再次导入该解决方案是什么?
提前谢谢!
答案 0 :(得分:1)
我看到两个原因在Android上的版本中不起作用:
1 。您要保存的位置。
您将图像保存在“ Assets / DCUnityOutput.png” 中,但是“ Assets” 目录仅在打开项目时才存在于编辑器中。构建完成后,“资产” 目录将不再存在。始终保存到Application.persistentDataPath
路径。
2 。 PngExporter插件依赖性。
您使用的PngExporter插件取决于某些WPF和WinForm API,而移动设备不支持。使用Unity时,请避免使用随机的C#库,除非您确定它们不依赖WPF和WinForm API。
在Unity中保存和加载图像非常容易,不需要WPF和WinForm API。
保存:
string tempPath = Path.Combine(Application.persistentDataPath, "images");
tempPath = Path.Combine(tempPath, "DCUnityOutput.png");
File.WriteAllBytes(tempPath, pngImageByteArray);
加载:
byte[] pngImageByteArray = null;
string tempPath = Path.Combine(Application.persistentDataPath, "images");
tempPath = Path.Combine(tempPath, "DCUnityOutput.png");
pngImageByteArray = File.ReadAllBytes(tempPath);
从png / jpeg字节数组创建Textue2D:
Texture2D tempTexture = new Texture2D(2, 2);
tempTexture.LoadImage(pngImageByteArray);
将Texture2D导出/保存为png:
byte[] pngImageByteArray = tempTexture.EncodeToPNG();
string tempPath = Path.Combine(Application.persistentDataPath, "images");
tempPath = Path.Combine(tempPath, "DCUnityOutput.png");
File.WriteAllBytes(tempPath, pngImageByteArray);