导出/导入png文件Android Unity

时间:2018-10-20 22:25:29

标签: c# android unity3d import export

 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图像并再次导入该解决方案是什么?

提前谢谢!

1 个答案:

答案 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);